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="passwordintegrity" class="com.jaeson.struts.validator.PasswordIntegrityValidator" /> </validators>
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import com.opensymphony.xwork2.validator.ValidationException;
import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport;
public class PasswordIntegrityValidator extends FieldValidatorSupport {
static Pattern digitPattern = Pattern.compile("[0-9]");
static Pattern letterPattern = Pattern.compile("[a-zA-Z]");
static Pattern specialDefaultPattern = Pattern.compile("[!@#$]");
@Override
public void validate(Object object) throws ValidationException {
String fieldName = this.getFieldName();
String fieldValue = (String) this.getFieldValue(fieldName, object);
fieldValue = fieldValue.trim();
Matcher digitMatcher = digitPattern.matcher(fieldValue);
Matcher letterMatcher = letterPattern.matcher(fieldValue);
Matcher specialMatcher;
if (this.getSpecialCharacter() != null) {
Pattern specialPattern = Pattern.compile("[" + this.getSpecialCharacter() + "]");
specialMatcher = specialPattern.matcher(fieldValue);
} else {
specialMatcher = specialDefaultPattern.matcher(fieldValue);
}
if (!digitMatcher.find()) {
this.addFieldError(fieldName, object);
} else if (!letterMatcher.find()) {
this.addFieldError(fieldName, object);
} else if (!specialMatcher.find()) {
this.addFieldError(fieldName, object);
}
}
private String specialCharacter;
public String getSpecialCharacter() {
return specialCharacter;
}
public void setSpecialCharacter(String specialCharacter) {
this.specialCharacter = specialCharacter;
}
}
validators.xml放在与struts.xml相同的目录下