基于Tapestry4
源代码在线查看: fruitmountvalidator.java
package com.tapestry4;
import org.apache.tapestry.IMarkupWriter;
import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.form.FormComponentContributorContext;
import org.apache.tapestry.form.IFormComponent;
import org.apache.tapestry.form.ValidationMessages;
import org.apache.tapestry.form.validator.Validator;
import org.apache.tapestry.valid.ValidatorException;
public class FruitMountValidator implements Validator {
private Integer fruitId;
public void validate(IFormComponent field, ValidationMessages message,
Object object) throws ValidatorException {
Fruit fruit = Products.findFruitById(this.getFruitId());
Number n = (Number)object;
if(n.intValue()>fruit.getMount()){
throw new ValidatorException("购买数量大于"+ fruit.getName() +"的存货(" + fruit.getMount() + "),请重新输入!", null);
}
}
/**
* 是否把null作为效验的值。如果返回true,则不输入任何值也会触发validate方法,只是第三个参数为Object的值null。
* 如果返回为false,则输入null不触发validate方法。
*/
public boolean getAcceptsNull() {
return false;
}
/**
* tapestry并不会使用这个方法,该方法只是为了方便自己标识。
*/
public boolean isRequired() {
return true;
}
/**
* 这个方法可以用来放置JavaScript。
*/
public void renderContribution(IMarkupWriter arg0, IRequestCycle arg1,
FormComponentContributorContext arg2, IFormComponent arg3) {
}
public Integer getFruitId() {
return fruitId;
}
public void setFruitId(Integer fruitId) {
this.fruitId = fruitId;
}
}