package org.zkoss.zktest.bind.viewmodel.validator;
import java.util.Map;
import org.zkoss.bind.BindContext;
import org.zkoss.bind.Converter;
import org.zkoss.bind.ValidationContext;
import org.zkoss.bind.Validator;
import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.NotifyChange;
import org.zkoss.bind.annotation.BindingParam;
import org.zkoss.zk.ui.Component;
public class Va04{
private Integer age = 0;
private Integer positiveOne = 1;
public Integer getPositiveOne() {
return positiveOne;
}
public void setPositiveOne(Integer positiveOne) {
this.positiveOne = positiveOne;
}
public Integer getAge() {
return age;
}
@NotifyChange
public void setAge(Integer age) {
this.age = age;
}
// ------ validator ------------
public class UpperBoundValidator implements Validator {
public void validate(ValidationContext ctx) {
Number upperBound = (Number)ctx.getBindContext().getValidatorArg("max");
if (ctx.getProperty().getValue() instanceof Number){
Number value = (Number)ctx.getProperty().getValue();
if (value.longValue() > upperBound.longValue()){
ctx.setInvalid();
}
}else{
ctx.setInvalid();
}
}
}
public Validator getUpperBoundValidator(){
return new UpperBoundValidator();
}
//--------- converter ------------
public class MaturityIndicator implements Converter {
public Object coerceToUi(Object val, Component component, BindContext ctx) {
Integer age = (Integer)val;
if (age >= 18){
return "Adult";
}
return "Under Age";
}
public Object coerceToBean(Object val, Component component, BindContext ctx) {
return null;
}
}
public Converter getMaturityIndicator(){
return new MaturityIndicator();
}
// -----------command -----------------
@Command
public void add(@BindingParam("increment") Long increment){
age += increment.intValue();
}
}