我尝试了以下代码(我遵循了一个示例)来测试从日历中选择的日期.如果我的数据库中不存在该日期,则应向最终用户显示一条验证错误消息.但是,错误不会最终出现在< h:message>中,而是被记录到服务器日志中.
视图:
验证器:
@FacesValidator("calendarValidator")
public class CalendarValidator implements Validator{
@Override
public void validate(FacesContext context, UIComponent component, Object value) {
java.util.Date date2 = (java.util.Date) value;
try {
if (validateDate(date2)) {
throw new ValidatorException(new FacesMessage("A valid date"));
} else {
throw new ValidatorException(new FacesMessage("date dont figure in the database"));
}
} catch(Exception e) {
e.printStackTrace();
}
}
}
服务器日志:
INFO: date invalide
GRAVE: javax.faces.validator.ValidatorException: date dont figure in the database
at DAOKPI.CalendarValidator.validate(CalendarValidator.java:60)
at javax.faces.component.UIInput.validateValue(UIInput.java:1149)
at javax.faces.component.UIInput.validate(UIInput.java:967)
at javax.faces.component.UIInput.executeValidate(UIInput.java:1233)
at javax.faces.component.UIInput.processValidators(UIInput.java:698)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
at javax.faces.component.UIForm.processValidators(UIForm.java:253)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1172)
at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:409)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1