请介绍一下struts2中输入校验的实现方法有哪些

如题所述

struts中提供两种校验方法:硬编码和校验框架;
硬编码就是直接写validate()进行验证,validate()方法对应execute()方法。
在action里也可以重新定义method方法,这样在对应的逻辑处理类中直接定义该方法对应的validate()方法。
如定义了方法abc()
  public String abc()
   {
    System.out.print("hello");
    return SUCCESS;
   }
public void validateAbc()
{//方法名为validate+方法名(第一个字母大写)
System.out.println("vailidate abc");
//首先执行validateAbc(),再执行validate()方法,再在执行abc();
//解决方法有两个:一是去掉validate()方法;二是将validate()方法重命名为validateExecute();
}
public void validate() {
if(null==username||username.length()<6||username.length()>10)
{
//表单中只显示FILED级别的错误信息,不显示ACTION级别的错误信息
//两种验证,FILEDERROR存放在MAP中会在标签库中显示,
//而actionerror是存放在LIST里,不会在标签库默认显示,所以页面中不会有错误提示
this.addFieldError("username","username invalid");
//this.addActionError("username invalid");
}
if(null==password||password.length()<6||password.length()>10)
{
this.addFieldError("password","密码不合法");
}
}
校验框架就是要写对应该ACION的的xml配置文件,
如针对RegisterAction建立RegisterAction-validation.xml文件进行数据校验。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<validator type="requiredstring">
<param name="fieldName">username</param>
<message>姓名不能为空</message>
</validator>
<validator type="stringlength">
<param name="fieldName">username</param>
<param name="minLength">6</param>
<param name="maxLength">10</param>
<message>姓名长度应在${minLength}和${maxLength}之间</message>
</validator>
<!--下面是字段检验器,上面是非字段校验器
<field name="username">
<field-validator type="requiredstring" short-circuit="true">
<param name="trim">true</param>
<message>姓名不能为空</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">6</param>
<param name="maxLength">10</param>
<message>姓名长度应在${minLength}和${maxLength}之间</message>
</field-validator>
</field>
<field name="password">
<field-validator type="requiredstring">
<message>密码不能为空</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">6</param>
<param name="maxLength">10</param>
<message>密码长度应在${minLength}和${maxLength}之间</message>
</field-validator>
</field>
<field name="repassword">
<field-validator type="requiredstring">
<message>再次密码不能为空</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">6</param>
<param name="maxLength">10</param>
<message>再次长度应在${minLength}和${maxLength}之间</message>
</field-validator>
</field>
<field name="age">
<field-validator type="int">
<param name="min">1</param>
<param name="max">150</param>
<message>年龄应在${min}和${max}之间</message>
</field-validator>
</field>
<field name="birthday">
<field-validator type="required">
<param name="trim">true</param>
<message>出生日期不能为空</message>
</field-validator>
<field-validator type="date">
<param name="min">1988-1-1</param>
<param name="max">2001-1-1</param>
<message>出生日期应在${min}和${max}之间</message>
</field-validator>
</field>
<field name="graduation">
<field-validator type="required">
<param name="trim">true</param>
<message>毕业日期不能为空</message>
</field-validator>
<field-validator type="date">
<param name="min">2010-1-1</param>
<param name="max">2012-1-1</param>
<message>毕业日期应在${min}和${max}之间</message>
</field-validator>
</field>-->
</validators>

  另外例:RegisterAction-test-validation.xml
  (类名-方法名-validation.xml专门对该类的test()方法进行校验,但是首先进行RegisterAction-validation.xml校验)
  所以建议:如果一个action对应多个处理逻辑的方法,不要写全局的.xml校验,而应该针对每个逻辑方法写专门的.xml校验。

  注意:
  a. 真正存放field级别错误信息的对象是LinkedHashMap
(而且先处理的validation.xml里面的,然后处理validate()方法里的)
  b. 该LinkedHashMap的key是String类型的,value是ArrayList类型的
  c. 对于Action级别的错误信息,实际上是放置在ArrayList中的。
  struts2同样支持客户端校验:
  a.form的theme一定不能设为simple
  b.将FORM的validate属性设为TRUE
  但是最好不使用struts2提供客户端校验,功能比较弱.
温馨提示:内容为网友见解,仅供参考
无其他回答

struts2中输入校验的实现方法有哪些
struts中提供两种校验方法:硬编码和校验框架;硬编码就是直接写validate()进行验证,validate()方法对应execute()方法。在action里也可以重新定义method方法,这样在对应的逻辑处理类中直接定义该方法对应的validate()方法。如定义了方法abc()public String abc(){ System.out.print("hello");return SUCCE...

关于Struts2输入校验的问题!
如果age属性是直接定义在action类中的话,属性文件应这么写,invalid.fieldvalue.age=age should be a integer,如果age是定义在一个JavaBean中,比如User中有age属性,而在action类中引用的是User user对象的话,那么属性文件应这么写,invalid.fieldvalue.user.age=age should be a integer ...

在项目中,struts校验一般用哪种方式?xml?还是valdate()函数,还是直接自...
1.普通的处理方式:只需要在action中重写validate()方法 2.一个action对应多个逻辑处理方法:指定校验摸个特定方法的方式: 重写validateXxxx()方法。Eg:如果,只校验login方法,则只需重写validateLogin(). 二. 输入校验流程: 1. 类型转换器负责对字符串的请求参数执行类型转换。并将这些值设置成Action的属性值。 2. ...

谁能给我用struts2写一下增加用户addUser的例子, 要求输入用户名,输 ...
其次进行输入效验的方式是有很多种,可以使用.properties属性文件、-validation.xml文件或编写validate方法(前提你这个类必须是继承ActionSupport类)这里我讲解一下最简单的,使用validate方法实现效验。(这里不仅要讲会用,还要讲原理)首先实现代码: 编写下面方法即可 public void validateAddUser({ if(null...

struts2 登陆时怎样在本页面提示密码输入错误啊??(用验证框架),望给出...
<field name="username">\/\/要校验的字段名(密码校验把此改为pwd即可)<field-validator type="requiredstring">\/\/不许为空 <message>no null<\/message>\/\/错误提示 <\/field-validator> <\/field> 二、struts2配置文件 <struts> <package name="default" extends="struts-default"> <action name="...

我的项目是用struts 2的,我怎么样验证用户2次输入的密码是不是相同的...
function fun(){ var aa=$("#p1").val();var bb=$("#p2").val();if(aa==bb){ alert("密码相等");}else{ alert("密码不相等");} } 密 码: 确认密码: 别忘了引入jquery

如何使用struts2中的validate方法验证数据
action 中定义 validate方法 String name;String message;\/\/要定义name message的get set方法 validate(){ if(name.equals("")){ addFieldError(“message”,"用户名不能为空");} } 登录页面 <%@taglib prefix="s" uri="\/struts-tags" %> 用户名: ...

struts2 validation 怎么效验2次密码一致?
用xml写 还真不知道该怎么去写,我一般都是再写给类,例如 A 类吧,定义两个属性,password和confirm,注意password是要存储到数据库当中尔confirm不需要,当我们点击提交时首先调用这个类,password 是否equles(confirms),如果返回true那就进行下一步。不知道我的回答你满意不满意 ,还有一种 我不知道行...

Struts2的校验的执行顺序,先执行手动的输入校验,然后执行框架校验
①首先执行数据类型转换 ②执行对应的校验框架 ③执行特定方法的validateXXX()方法里的验证,例如在struts.xml中配置action的method方法为test,则执行validateTest()方法里的验证,method的值默认是execute,执行的是validate()方法的验证,即第4条的内容 ④执行validate()方法的验证 所以,大体上来说,是...

j2ee struts2 日期验证。在action方法里验证。
如果检验的是日期的格式的话,建议你别在struts2的action中验证,否则程序运行的性能不是很好,直接在前台页面验证;前台可以用javascript脚本或者jquery亦或者其他技术验证。

相似回答