package org.zkoss.zktest.bind.viewmodel.form; import java.util.Calendar; import java.util.Date; 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.zk.ui.Component; public class F1 { public static class User{ private String account; private String password; private String password2; private Date birthday; private boolean isAdult; public String getAccount() { return account; } public void setAccount(String account) { this.account = account; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getPassword2() { return password2; } public void setPassword2(String password2) { this.password2 = password2; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public boolean isAdult() { return isAdult; } public void setAdult(boolean isAdult) { this.isAdult = isAdult; } } private User user = new User(); public User getUser(){ return user; } class F1Validator implements Validator{ public void validate(ValidationContext ctx) { String password = (String)ctx.getProperties("password")[0].getValue(); String password2 = (String)ctx.getProperties("password2")[0].getValue(); if (password==null || !password.equals(password2)){ ctx.setInvalid(); return; } String account = (String)ctx.getProperties("account")[0].getValue(); if (account==null || account.length()==0){ ctx.setInvalid(); } } } public Validator getF1Validator(){ return new F1Validator(); } public class BirthdayAdultConverter implements Converter{ public Object coerceToUi(Object val, Component component, BindContext ctx) { return val; } public Object coerceToBean(Object val, Component component, BindContext ctx) { boolean isAdult = false; if (val!= null){ Calendar adultDay = Calendar.getInstance(); adultDay.setTime((Date)val); adultDay.add(Calendar.YEAR, 18); Calendar now = Calendar.getInstance(); if (now.after(adultDay)){ isAdult = true; } } return isAdult; } } public Converter getBirthdayAdultConverter(){ return new BirthdayAdultConverter(); } @Command @NotifyChange("message") public void register(){ System.out.println(); } public String getMessage(){ String message =""; if (user.getAccount()!=null){ message = "Hi, "+user.getAccount()+": You are "; } if (user.isAdult){ message += "an adult."; }else{ message += "NOT an adult."; } return message; } }