Struts2中的校验

1、编写校验规则文件

为Action中的属性指定一个校验规则文件,文件名应该为<Action名字>-validation.xml的形式。java

<validators>
   <field name='action中的属性'>
      <field-validator type="该属性须要知足的规则">
        <param name=""></param>
        <message>错误提示</message>
      </field-validator >
   </field>
</validators>

当校验失败后,struts2也会返回“input”的Result,配置对应的Action返回试图。数据库

<action name="upd" class="com.shcredit.controller.TestAction">
			<result name="input">/jsp/appkind/appkindupd.jsp</result>
			<result name="success" type="redirect">qry.action?flag=1</result>
</action>

2、使用客户端校验

使用客户端进行校验首先要将输入页面的表单元素改成使用Struts2标签<s:form>来生成表单,为该<s:form>元素增长validate="true"属性。app

将请求页面放置于WEB-INF/content路径下,让浏览者访问资源以前先通过它的核心Filter,在struts.xml中增长配置:jsp

<action name="*">
		<result>/WEB-INF/content/{1}.jsp</result>
</action>

启用客户端校验的表单action和namespace要分开写。将原来<s:form>中的action="/test/validate"写成namespace="test",action="validate"。ide

客户端校验只支持以下几种校验器:ui

    required validator(必填校验器);this

    requiredstring validator(必填字符串校验器);url

    stringlength validator(字符串长度校验器);spa

    regex validator(表达式校验器);code

    email validator(邮件校验器);

    url validator(网址校验器);

    int validator(整数校验器);

    double validator(双精度校验器);

3、手动完成输入校验

该方式最为灵活,能够处理许多规则没法校验的状况,好比name值在数据库中惟一性,文件校验等。

1)重写ActionSupport中的validate()方法;

@Override
	public void validate() {
		this.clearFieldErrors();
		// 一、检查用户名称,不能为空、不能有特殊字符
		if (!ParameterValidate.validateNull(appType.getTypeName())) {
			this.addFieldError("appTypeName_error", "应用类别名称不能为空!");
		} else if (ParameterValidate.filterCharacter(appType.getTypeName())) {
			this.addFieldError("appTypeName_error", "应用类别名称不能包含特殊字符!");
		}
		
	}

一旦校验未经过,会经过该action的"input"试图将fieldError中的错误返回值对应JSP中的<s:fielderror>中。

2)重写validateXxx()方法

为了实现校验指定逻辑的功能,struts2中的action提供了validateXxx()方法,其中Xxx便是Action对应的处理逻辑方法。

相关文章
相关标签/搜索