关于<html:errors>和<html:messages>的几点使用心得和经验 在Struts项目中,标签的功能非常强大。以前没有用过,这次初次使用,因此在编码的过程中,可谓一波三折。虽然网上的资料非常丰富,但是"网上的来终觉浅,绝知此事要躬行”,因此在使用的过程中频频出现别人没有提及到的问题。使用<html:errors>和<html:messages>这两个标签时,按照以下步骤写代码,就遇到问题:
1.我在Actionform中的Validate()方法中,定义了ActionErrors errors对象,在ActionForm中的消息类型集合目前只能采用它来封装。里面封装的消息信息为ActionMessages.GLOBAL_MESSAGE, new ActionMessage("key");
2.我在Action中用的是ActionMessages messages类来封装错误和提示信息,里面封装的消息信息为ActionMessages.GLOBAL_MESSAGE, new ActionMessage("key");其中保存方法为addMessages(request,messages);
3.我在页面上采用一个<div>来显示所有的系统消息(包括ActionForm中的消息和Action中的消息),我想做到底效果是,当系统没有消息时,<div>不显示;而当系统有消息时(包括ActionForm中的消息和Action中的消息),我就用<div>来显示系统消息。
具体的代码如:
<logic:messagesPresent> //--有消息才显示
<div><html:errors /></div>
</logic:messagesPresent>
此时运行程序就遇到了一个问题:
只当ActionForm中有消息时,能在页面上显示,但是Action中的消息不能显示。
后来,我把Action程序中的保存消息的方法改成saveErrors(request,messages);此时在页面上能显示Action中的消息,但是,ActionForm中有消息时页面就不能显示了。 遇到这个问题,我到处查阅资料,搞了一上午,最后终于实现了当初我们的设计:
action中消息保存方法为addMessages(request,messages); 具体做法如下:<logic:messagesPresent>
<div align="left" id="menu_error" onClick="hideMenu('menu_error');">
<font color=blue class="style5">
系统提示! <br> <br> </font> <font>
<html:messages id="message" message="false">
<bean:write name="message" /><br>
</html:messages> </font> <br> <br> </div>
</logic:messagesPresent> <logic:messagesPresent message="true"> <div align="left" id="menu_error" onClick="hideMenu('menu_error');"> <font color=blue class="style5"> 系统提示! <br> <br> </font> <font> <html:messages name="GLOBAL_MESSAGE" id="message" message="true"> <bean:write name="message" /><br> </html:messages> </font> <br> <br> </div> </logic:messagesPresent>
解释:<logic:messagesPresent>是表示在系统作用域范围内,如果存在ActionMessage对象就执行用户想要的操作。(一般需求就是显示消息) <logic:messagesPresent>的message属性可以标记消息的类型,值为true或false,false对应GLOBAL_ERROR,true对应GLOBAL_MESSAGE。GLOBAL_ERROR就是错误消息(即ActionErrors类型),GLOBAL_MESSAGE是提示消息(即ActionMessages类型),默认值为false; 因此,我想要显示错误消息就用<logic:messagesPresent>或<logic:messagesPresent message="false">; 显示消息的语句可以用<html:errors> 或者 <html:messages id="message" message="false"> <bean:write name="message" /><br> </html:messages> ---------------------- 显示提示消息就用<logic:messagesPresent message="true">; <html:messages id="message" message="true"> <bean:write name="message" /><br> </html:messages> -------------------- 上面就是<html:errors>和<html:messages>的具体使用方法和技巧。