struts2--使用validate()验证

来源:互联网 发布:淘宝最迟确认收货时间 编辑:程序博客网 时间:2024/06/06 01:49

表单验证:


通过validate()方法来验证输入数据格式的正确性,需要实现ActionSupport类

登录界面:

  <body>    <s:form action = "login" method = "post">      <s:textfield name = "username" label = "用户名"/>      <s:password name = "password" label = "密码"/>      <s:textfield name = "age" label = "年龄"/>      <s:submit value = "验证"/>     </s:form>  </body>

LoginAction:

package com.action;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport{  private String username ;  private String password ;  private int age ;    public void validate() {  if("".equals(username) || username.length()>6){  addFieldError("username", "用户名格式不正确");  }  if("".equals(password) || password.length()<6){  addFieldError("password", "用户名密码不正确");  }  if(age<0 || age >200){  addFieldError("age", "年龄在0~200之间");  }  }      public String execute() {return SUCCESS;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}  }

在方法execute()方法执行之前,struts框架会自动调用validate()验证方法,如果出现不匹配的类型,则将信息填入Fielderror并返回"login"逻辑视图。

当然Action中很多时候不止execute()一个方法,所以,当需要在特定的方法前进行数据验证,则需要validateXxx(), 其中Xxx为方法名。如可在Action中设置如下


  public void validateLogin() {  if("".equals(password) || password.length()!=6){  addFieldError("password", "密码必须为六位");  }}    public String login() {return SUCCESS;}
struts.xml配置:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"    "http://struts.apache.org/dtds/struts-2.1.7.dtd"><struts>  <package name="default" namespace = "/" extends = "struts-default">    <action name = "login" class = "com.action.LoginAction" method = "login">       <result>/ok.jsp</result>       <result name = "input">/index.jsp</result>    </action>  </package></struts>

有了validateXxx()方法后,validate方法仍会执行,只不过在validateXxx()之后执行


原创粉丝点击