论坛首页 Java企业应用论坛

struts2利用<s:fielderror/>等标签详细地控制错误消息输出格式

浏览 8572 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-12-14   最后修改:2008-12-15
首先请看如下代码:
 <s:if test="hasFieldErrors()">
	<s:iterator value="fieldErrors">
		<s:iterator value="value">
			<script language="JavaScript">
				alert('<s:property/>');
			</script>   
		</s:iterator>  
	</s:iterator> 
 </s:if>


这样当有field错误,就会弹出错误提示!当然不alert的话 也可以在外面之间套上div,控制输出格式
但问题来了 如果有多个field错误 就会不断地弹出消息窗口
我想把所有的错误消息全部显示在一个对话框中 每条错误消息占一行
怎么才能做到呢?

经过很长时间的摸索 问题终于给解决了 现在把它分享出来

在需要显示消息的页面加入message.jsp
(或者把message.jsp的内容直接放在要显示消息的页面 )
 <s:include value="message.jsp"></s:include>

最好把它放在页面最后 等页面全部加载后 再显示消息
要不然 加在前面的话就可能看到页面空白 消息提示显示完成后再显示页面

message.jsp代码如下
<%@ page language="java" contentType="text/html; charset=GB18030"
	pageEncoding="GB18030"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
   <body>
         //fielderror
	<s:if test="hasFieldErrors()">
		<s:iterator value="fieldErrors">
			<s:iterator value="value" status="statu">
				//field的错误消息是List 因此还需要迭代一次		
				<s:set name="index" value="#statu.index"/>
				<s:set name="msg" value="#msg==null?'':#msg+
				value.get(#request.index).toString()+'\\\n'"/>//关键代码
			 </s:iterator>
		</s:iterator>
	</s:if>

         //actionerror
	<s:if test="hasActionErrors()">
		<s:iterator value="actionErrors">
		       <script  language="JavaScript">
				alert("<s:property escape="false"/>")
		       </script>
	        </s:iterator>
	</s:if>

         //actionmessage
	<s:if test="hasActionMessages()">
		<s:iterator value="actionMessages">
			<script language="JavaScript">
				alert("<s:property escape="false"/>")
			</script>
		</s:iterator>
	 </s:if>

         //打印转换好格式的fielderror信息
	<s:if test="#msg.length()>0">
		<script language="JavaScript">
			alert("<s:property escape="false" value="#msg"/>")
		</script>
	</s:if>
	</body>
</html>



   发表时间:2008-12-15  
最好不要alert.
0 请登录后投票
   发表时间:2008-12-15  
yuxianghong 写道
最好不要alert.


理由呢?

我觉得在页面显示会占用过多的空间
0 请登录后投票
   发表时间:2008-12-15   最后修改:2008-12-15
alert('#messages');   


struts2中 怎么在把ognl用到javascript中去 不知道struts2支不支持?

tapestry中已经能在javascript使用ongl
详细情况:http://www.mail-archive.com/users@tapestry.apache.org/msg01451.html
0 请登录后投票
   发表时间:2009-01-07  
alert怎么了?
0 请登录后投票
   发表时间:2009-01-07  
jesong 写道
alert怎么了?

看到alert就不爽...
用户体验不好,还得点一下..
0 请登录后投票
   发表时间:2009-01-09  
classicbride 写道
jesong 写道
alert怎么了?

看到alert就不爽...
用户体验不好,还得点一下..

开发人员有自己的喜好 但最终还是用户说了算
发个投票 看看喜欢alert的多还是在页面直接显示的多 
0 请登录后投票
   发表时间:2009-02-18  
struts2.0弹出验证
<!--用javascript验证  -->
   <s:if test="hasFieldErrors()">
   <script language="JavaScript">
   var msg = ''; 
<s:iterator value="fieldErrors">  
    <s:iterator value="value">  
            msg=msg+'<s:property/>'+'\n';
    </s:iterator>    
</s:iterator>
alert(msg);
</script>     
</s:if> 
<!--用javascript验证  -->
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics