我有一个使用 convertDateTime 的 JSF 日期组件,它接受“12/12/2013ab”
支持 bean 返回 "12/12/2013" 作为日期
我可以知道如何防止用户输入“12/12/2013ab”。它将提示 12/1a/2013 的错误。
提供一个自定义日期转换器,它还检查输入长度。
@FacesConverter("myDateTimeConverter")
public class MyDateTimeConverter extends DateTimeConverter {
public MyDateTimeConverter() {
setPattern("MM/dd/yyyy");
}
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
if (value != null && value.length() != getPattern().length()) {
throw new ConverterException("Invalid format");
}
return super.getAsObject(context, component, value);
}
}
(请注意模式是MM/dd/yyyy
和不是mm/DD/yyyy
)
然后,而不是
<h:inputText value="#{bean.date}">
<f:convertDateTime pattern="MM/dd/yyyy" />
</h:inputText>
利用
<h:inputText value="#{bean.date}" converter="myDateTimeConverter" />