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" />