`

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

阅读更多

 

碰到一个页面总是报500错误,而且后台又没有任何输出错误信息,很是郁闷,

经最后查证,原来是在struts进行字段验证时报的错,主要原因是我们的错误页面没有用标签捕获

各种异常信息,才导致很难定位错误所在。

 

首先请看如下代码:

 

<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的内容直接放在要显示消息的页面 ) 

  1. <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>      

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics