关于struts:errors标签的几点使用心得和经验

来源:互联网 发布:网络视频栏目组招聘 编辑:程序博客网 时间:2024/05/27 12:21

  关于<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>的具体使用方法和技巧。