Struts校验框架

struts2提供的校验方式
1.字段校验 field (我去校验谁我用谁去校验) felid级别的错误信息都是用feildErrors()显示
2.非字段校验 validate (我用谁去校验我去校验谁)
注意:要是硬编码的方式validate()校验又用校验框架-validate.xml文件进行校验是两者都会执行
     所以一般使用一种就可以了
     当校验方式不是很复杂的话就用xml方式
xwork-2.0.4.jar--com.opensymphony.xwork2.validator.validators--default.xml
校验那个action就要在同一个目录包下见一个action-validation.xml
如:RegisterAction就要建立一个RegisterAction-validate.xml 必须要dtd

============字段校验 field (我去校验谁我用谁去校验)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "
http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
 <field name="username">
type=""type中的属性在com.opensymphony.xwork2.validator.validators--default.xml中有详细的说明
short-circuit="false"表示短路的意思 当值为true时表示当requiredstring不通过时就不校验下面的stringlength
  <field-validator type="requiredstring" short-circuit="false" >
   <param name="trim">true</param>
message是当用户信息校验失败后给用户看到的信息
   <message key="username.xml.invalid"></message>
  </field-validator>
  
  <field-validator type="stringlength">
   <param name="minLength">6</param>
   <param name="maxLength">10</param>
   <message>username should be between ${minLength} and ${maxLength}</message>
  </field-validator>
 </field>
</validators>

============非字段校验 validate (我用谁去校验我去校验谁)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "
http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
 <validator type="requiredstring">
  <param name="fieldName">username</param>
  <message>username should not be blank!</message>
 </validator>
 
 <validator type="stringlength">
  <param name="fieldName">username</param>
  <param name="minLength">6</param>
  <param name="maxLength">10</param>
  <message>username should be between ${minLength} and ${maxLength}</message>
 </validator>
</validators>

Struts2同样支持客户端校验
1.form的主题(theme)一定不能设置为simple
2.将form的validate属性设置为true
   <form action="" validate="true"></form>
3.最好不要使用struts2给我们提供的客户端校验 要用的话可以用javaScript

<s:form action="register.action" theme="simple" οnsubmit="return validate()">
每一个元素都有一个id属性可以自己提供<s:textfield name="username" label="username" id="usernameId">

=========针对特定的方法编写特定的校验文件**-**-validation.xml
<action name="register" class="com.test.action.RegisterAction" method="test">
</action>
public class RegisterAction extends ActionSupport
{
 public String test() throws Exception
 {
  return SUCCESS;
 }
}
针对method="test" 调用test()方法 编写特定的校验文件RegisterAction-test-validation.xml

当全局校验文件和局部校验文件都存在时
先校验RegisterAction-vlidation.xml在校验RegisterAction-test-validation.xml
如果一个action要处理多个逻辑就不要写**-validation.xml而是针对每个处理逻辑编写校验文件

public void validate()
{
 System.out.println("validate~~~~~~~~~~~~~~~~~~~"); 
 this.addFieldError("username","aaaaaaaaaaaaaaaa");
 这里的getFieldErrors()实际上是增加了一个FieldError的副本 只能读不能修改错误信息
 this.getFieldErrors().put("username","bbbbbbbbbbbbb");
}
  
1. 真正存放field级别错误信息的对象是LinkedHashMap

2. 该LinkedHashMap的key是String类型的,value是ArrayList类型的
 if (null == username || username.length() < 6 || username.length() > 10)
  {
   List list = new ArrayList();
   
   list.add(username);
   
   this.addActionError(this.getText("username.invalid",new String[]{username}));
  }

3. 对于Action级别的错误信息,实际上是放置在ArrayList中的 所以只有一个参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值