Struts的html:errors没有显示的解决办法

简介:
  1. 在struts-config.xml必须设置需要验证的ActionForm
    <action
          attribute="findSellForm"
          validate="true"
          input="/index.jsp"
          name="findSellForm"
          path="/findSell"
          scope="request"
          type="ucshop.action.FindSellAction" >
          <forward name="fail" path="/index.jsp" />
          <forward name="success" path="/findsell.jsp" />
        </action>

    validate默认值是true的,所以可以省略;如果不想验证,则设为false,这样的话,后面的就不用看了!

    input要指明,检验流程:当执行validate方法时,返回的ActionErrors检查内部是否存在元素,有则返回到原来的input指定的页面;否则继续前进,执行Action的execute方法!到时候forward的fail和success才起作用!

  2. JSP页面
    <html:form action="/findSell">
     物品分类: <html:select property="productType">
      <html:option value="电脑配件"/>
      <html:option value="数码产品"/>
      <html:option value="运动用品"/>
      <html:option value="生活用品"/>
      <html:option value="户外用品"/>
      <html:option value="其他"/>
     </html:select>
    <br/><br/>
     物品名称: <html:text property="name"/> <html:errors property="sellname"/>
    <br/><br/>
     <html:submit value="搜索"/>
    </html:form>

    注意: 加蓝的语句中property的值sellname是对应下面的validate()方法中的"errors.add("sellname"new ActionMessage("errors.productNameEmpty")); "的selllname!

  3. ActionForm的validate
    下面的代码是struts的1.2版本的:
    public ActionErrors validate(ActionMapping mapping, 
          HttpServletRequest request) { 
                     //创建ActionErrors 
      ActionErrors errors =  new ActionErrors(); 
       
       //物品名称的检验 
       if (getName() ==  null || getName().trim().equals("")) 
      { 
          errors.add( "sellname"new ActionMessage( "errors.productNameEmpty")); 
      }

       //返回ActionErrors 
       return errors; 
    }
    自struts1.2, ActionError类都Deprecated,不再赞成使用,官方建议使用ActionMessage类,所以在struts1.2以下版本的,上面的"errors.add("sellname"new ActionMessage("errors.productNameEmpty")); "改为errors.add("sellname"new ActionError("errors.productNameEmpty")); 
    同时ActionErrors的GLOBAL_ERROR 被Deprecated,被ActionMessages.GLOBAL_MESSAGE 代替!
    ========================================
    有时候需要在Action的execute()方法里面进行例如权限的验证.
    举个例子,validate()是检查用户名和密码数据是否为空,当用户输入了完整信息后,执行execute(),这时若发现"用户名或密码有误",,就需要显示错误信息
    public  class ServerValidationAction  extends Action { 
         public ActionForward execute(ActionMapping actionMapping, 
          ActionForm actionForm, HttpServletRequest httpServletRequest, 
          HttpServletResponse httpServletResponse) { 
       /* 
       * 权限验证 
       */
     
      ServerValidationActionForm form = (ServerValidationActionForm) actionForm; 

       if (!form.getPassword().equals( "password")) { 
           ActionErrors errors = new ActionErrors(); 
           errors.add(ActionErrors.GLOBAL_ERROR, new ActionMessage( 
            "errors.passwordwrong")); 
          saveErrors(httpServletRequest, errors); 
          return new ActionForward(actionMapping.getInput());
     

       } 
        return actionMapping.findForward( "success"); 
      } 


  4. WEB-INF文件夹的classes目录下创建一个文件夹xx,添加一个名为gb_ApplicationResources.properties的文件在xx文件夹里面,内容
    errors.productNameEmpty=物品名称必须要填写
    等于号左边的内容名字就是new AcionMessage("erors.productNameEmpty"));的value
    创建文件内容为
    native2ascii gb_ApplicationResources.properties  ApplicationResources.properties
    保存为native2ascii java.bat 注意,不要保存为native2ascii.bat,否则会死循环!同时这个文件和gb_ApplicationResources.properties在同一目录!
    然后双击native2ascii java.bat,一会儿就会生成一个名为ApplicationResources.properties的文件!

  5. struts-config.xml添加<message-resources parameter="xx.ApplicationResources"/>
Ok,save,reload项目,run试试! 如果还不行,请检查上面的步骤遗漏了哪些!!


本文转自 Icansoft 51CTO博客,原文链接: 
http://blog.51cto.com/android/56608
相关文章
webp格式图片在html里不显示的解决方法
webp格式图片在html里不显示的解决方法
1368 0
webp格式图片在html里不显示的解决方法
|
移动开发 HTML5
修改HTML5 input placeholder 颜色及修改失效的解决办法
修改HTML5 input placeholder 颜色及修改失效的解决办法
|
JavaScript 前端开发
使用JavaScript控制HTML元素的显示和隐藏
使用JavaScript控制HTML元素的显示和隐藏
474 0
|
JavaScript 数据库
浏览器打开html文件显示中文乱码解决方法
浏览器打开html文件显示中文乱码解决方法
1333 0
|
JavaScript 前端开发
有关HTMl中a标签跳转到顶部的解决办法
有关HTMl中a标签跳转到顶部的解决办法
233 0
实时显示日期、时间、城市天气(HTML+JS)
实时显示日期、时间、城市天气(HTML+JS)
1062 0
实时显示日期、时间、城市天气(HTML+JS)
|
移动开发 HTML5
关于VScode不能使用!+tap快速创建HTML模板问题3种解决办法
关于VScode不能使用!+tap快速创建HTML模板问题3种解决办法
关于VScode不能使用!+tap快速创建HTML模板问题3种解决办法
|
JSON 数据格式
从富文本编辑器获取html内容组装json,特殊字符引起报错解决办法。
从富文本编辑器获取html内容组装json,特殊字符引起报错解决办法。
493 0