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

来源:互联网 发布:证券从业资格证软件 编辑:程序博客网 时间:2024/05/01 01:31

http://selvemen.iteye.com/blog/451113

首先请看如下代码: 

Jsp代码 
  1. <s:if test="hasFieldErrors()">      
  2. <s:iterator value="fieldErrors">      
  3.      <s:iterator value="value">      
  4.          <script language="JavaScript">      
  5.              alert('<s:property/>');      
  6.          </script>         
  7.      </s:iterator>        
  8. </s:iterator>      
  9. </s:if>    
  10.    


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

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

在需要显示消息的页面加入message.jsp 
(或者把message.jsp的内容直接放在要显示消息的页面 ) 

Jsp代码  收藏代码
  1. <s:include value="message.jsp"></s:include>     
  2.   
  3. <s:include value="message.jsp"></s:include>  


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

message.jsp代码如下 

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>

0 0
原创粉丝点击