Struts2中使用validate校验框架

Struts2的校验框架依赖自带的两个拦截器validationworkflow,他们都是在默认的拦截器栈中:


<interceptor-stack name="defaultStack">

......

 <interceptor-ref name="validation">

    <param name="excludeMethods">input,back,cancel,browse</param>

 </interceptor-ref>

<interceptor-ref name="workflow">

<param name="excludeMethods">input,back,cancel,browse</param> </interceptor-ref>

......

</interceptor-stack>

 validation拦截器会根据XML中的配置文件的设置,对JSP中发送的请求的数据进行校验,如果发现错误,会形成一个field-specific errors列表。workflow拦截器,会检查当前产生的各种错误,如果发现错误,那么默认就返回 "input" 结果,并将这些错误信息返回到JSPform中显示。

 如果我们使用的配置,并且struts.xml并没有配置name="input"的action,这时候有校验错误,我们会得到Struts2框架给我们的一个错误信息:你没有配置name="input"的action

1.

jsp页面代码

<body>
    <s:property value="username"/>
    <s:form action="login" method="post" validate="true">
        <s:textfield label="姓名" name="username"></s:textfield>
        <s:textfield label="年龄" name="age"></s:textfield>
        <s:password label="密码" name="password"></s:password>
        <s:submit value="submit"></s:submit>
    </s:form>
    <s:debug></s:debug>
  </body>

2.

struts.xml中代码

     <constant name="struts.devMode" value="true" />
     <package name="default" namespace="/" extends="struts-default">
        <action name="login" class="com.anbo.action.LoginAction" >
            <result name="success">
              /result.jsp
            </result>
            <result name="input">
              /Login.jsp
            </result>
        </action>
        
    </package>

3.

LoginAction中代码

package com.anbo.action;

import javax.swing.plaf.basic.BasicSliderUI.ActionScroller;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction  extends ActionSupport{
    private static final long serialVersionUID=-7505437345373234225L;
    private String username;
    private int age;
    private String password;

    public int getAge() {
        System.out.println("getAge");
        return age;
    }
    public void setAge(int age) {
        System.out.println("setAge");
        this.age = age;
    }
    public String getUsername() {
        System.out.println("getUsername");
        return username;
    }
    public void setUsername(String username) {
        System.out.println("setUsername");
        this.username = username;
    }
    public String getPassword() {
        System.out.println("getPassword");
        return password;
    }
    public void setPassword(String password) {
        System.out.println("setPassword");
        this.password = password;
    }
    
}

4、创建一个XML文件:QuizAction-validation.xml代码如下,这个文件是validation.xml文件,命名标准必须是<ActionClassName>-validation.xml或者是<ActionClassName>-<ActionAliasName>-validation.xml,并且和QuizAction类在同一个目录下。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "
-//Apache Struts//XWork Validator 1.0.3//EN"
        "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
  <field name="username">
      <field-validator type="requiredstring">
          <message>you must enter a name</message>
      </field-validator>
  </field>
  <field name="age">
      <field-validator type="int">
          <param name="max">19</param>
          <param name="min">10</param>
          <message>age value must in between 10 and 19</message>
     </field-validator>
  </field>
 
</validators>

5.创建result.jsp页面


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值