我有一个使用convertDateTime的JSF日期组件,它接受“12/12 / 2013ab”
支持bean将“12/12/2013”作为日期返回
我可以知道如何阻止用户输入“12/12 / 2013ab”。它将提示12 / 1a / 2013的错误。
答案 0 :(得分:4)
提供自定义日期转换器,同时检查输入长度。
@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);
}
}
(请注意,pattern为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" />