struts2问题

struts2二种检验方式

1.手动检验(编码方式校验)

  1) Action一定要继承自ActionSupport
  2) 针对某个要进行校验的请求处理方法编写一个 public void validateXxx()方法,在方法内部进行表单数据校验.
  3) 也可针对所有的请求处理方法编写public void validate()方法。
  4) 在校验方法中,可以通过addFieldError()方法来添加字段校验错误消息。
  5) 当校验失败时,Struts框架会自动跳转到name为input的Result页面。在校验失败页面中,可以使用<s:fielderror/>来显示错误消息
  6) 简单,灵活。但重用性不高。



package cn.itcast.action;

import cn.itcast.domain.User;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class login1Action extends ActionSupport implements ModelDriven<User>{

   private User user=new User();
   @Override
   public User getModel() {

      return user;
   }
   @Override
   public String execute() throws Exception {
      System.out.println("execute method ......");
      return null;
   }

   @Override
   public void validate() {
     // System.out.println("oooooooooooooooooooooo");
     // System.out.println(user.getPassword());
      if(user.getUsername()==null||user.getUsername().trim().length()==0){
         //说明用户名为空
         System.out.println("oo666666oooooooooooo");
         this.addFieldError("username.message", "用户名不能为空");
      }
      if(user.getPassword()==null||user.getPassword().trim().length()==0){
        // System.out.println("orrrrrrrrrrrrrrr");
         this.addFieldError("password.message", "密码不能为空");
      }
   }
}

这里表单封装

public User getModel() {

      return user;
   }
然后执行函数检验
 validate() 

  最后执行execute()函数......struts没有指定method默认执行execute()且默认返回SUCCESS常量
2. XML配置方式校验(在编码方式之前被执行)
  1) 针对要校验的Action类,在同包下编写一个名为:Action类名-validation.xml校验规则文件。
  2) 在校验规则文件中添加校验规则:具体的校验器名,参数可参看Struts2的reference或Struts2的API。
     a) Field校验:针对Action类中每个非自定义类型的Field进行校验的规则。
    <field name="要校验的Field名">
     <field-validator type="校验规则器名" short-circuit="是否要短路径校验(默认是false)">
         <param name="校验器要使用的参数名">值</param>
            <message>校验失败时的提示消息</message>
  </field-validator>
  <!-- 还可添加其它的校验规则 -->
 </field>

<field name="username">
        <!-- 指定username不能为空-->
        <field-validator type="requiredstring">
            <!-- 错误信息-->
            <message>用户名不能为空------------------</message>
        </field-validator>
        <field-validator type="stringlength">
            <param name="maxLength">10</param>
            <param name="minLength">4</param>
            <message>用户名必须在${minLength}-${maxLength}之间</message>
        </field-validator>
    </field>
    <field name="age">
        <field-validator type="int">
            <param name="min">10</param>
            <param name="max">50</param>
            <message>年龄必须在${min}-${max}之间</message>
        </field-validator>
    </field>
</validators>

表单提交校验

当表单校验成功user保存完整值,当表单检验失败不执行后续事情

public user1 getModel() {
    System.out.println(user);
    return user;
}
且只有当表单校验成功才执行struts2 里method对应的值得函数

public String login(){
    System.out.println("login method>>>>>>>>>>>>>>>>>>>>");
    return null;
}

public String regist1(){
    System.out.println("regist1>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
    return null;
}



\


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值