首先請看以下代碼:
- <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>
- <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>
- <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>