struts2学习笔记(十)struts2自定义校验

1.Action类

public class ValidateAction extends ActionSupport{

	private String name;
	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String execute(){
		return SUCCESS;
	}
}

2.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ taglib prefix="s" uri="/struts-tags" %>  
<html>
  <head>
    <title>My JSP 'HelloWorld.jsp' starting page</title>
  </head>
  <body> 
	<s:form action="validateAction" method="post">
		<s:textfield name="name" label="用户名"></s:textfield>
		<s:submit value="提交"></s:submit>
	</s:form>
  </body>
</html>
3.struts.xml配置

	<package name="validator" extends="struts-default">
		<action name="validateAction" class="com.skymr.struts2.chapter4.action.ValidateAction">
			<result name="success">/regSuc.jsp</result>
			<result name="input">/validate.jsp</result>
		</action>
	</package>

4.校验文件配置validators.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
        "-//Apache Struts//XWork Validator Definition 1.0//EN"
        "http://struts.apache.org/dtds/xwork-validator-definition-1.0.dtd">
 
<validators>
    <validator name="required" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/>
    <validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/>
    <validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/>
    <validator name="long" class="com.opensymphony.xwork2.validator.validators.LongRangeFieldValidator"/>
    <validator name="short" class="com.opensymphony.xwork2.validator.validators.ShortRangeFieldValidator"/>
    <validator name="double" class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/>
    <validator name="date" class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/>
    <validator name="expression" class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/>
    <validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/>
    <validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/>
    <validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/>
    <validator name="visitor" class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/>
    <validator name="conversion" class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/>
    <validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/>
    <validator name="regex" class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/>
    <validator name="conditionalvisitor" class="com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValidator"/>
    
    <validator name="sensitive" class="com.skymr.struts2.chapter4.action.SensitiveValidator"/>
</validators>
名为sensitive校验器是自定义的.


配置文件ValidateAction-validate.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
<validators>
	<field name="name">
		<field-validator type="requiredstring">
			<message>请填写用户名</message>
		</field-validator>
		<field-validator type="sensitive">
			<message>包含敏感词汇</message>
		</field-validator>
	</field>
</validators>


5.自定义校验类

package com.skymr.struts2.chapter4.action;

import com.opensymphony.xwork2.validator.ValidationException;
import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport;

public class SensitiveValidator extends FieldValidatorSupport{

	public void validate(Object object) throws ValidationException {
		String filedName = super.getFieldName();
		String filedValue = super.getFieldValue(filedName, object).toString();
		if(!this.check(filedValue)){
			super.addFieldError(filedName, object);
		}
	}
	
	protected boolean check(String value){
		String[] valiArr = new String[]{"***","***"};
		for(String vali: valiArr){
			if(value.indexOf(vali) >= 0){
				return false;
			}
		}
		return true;
	}
}

敏感字符串数组要经过自己修改


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值