zoukankan      html  css  js  c++  java
  • 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"newActionMessage("errors.productNameEmpty")); "改为errors.add("sellname"newActionError("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"/>
  • 相关阅读:
    HTML5标签
    CTF web之旅 45
    CTF web之旅44
    CTF web之旅 43
    CTF web之旅 42
    CTF web之旅41
    CTF web之旅40
    CTF web之旅 39
    CTF web之旅 38
    CTF web之旅 37
  • 原文地址:https://www.cnblogs.com/duanxz/p/2579728.html
Copyright © 2011-2022 走看看