2

convertDateTime を使用する JSF 日付コンポーネントがあり、「12/12/2013ab」を受け入れます

バッキング Bean は日付として「12/12/2013」を返します

ユーザーが「12/12/2013ab」を入力できないようにする方法を教えてください。12/1a/2013 のエラーが表示されます。

4

1 に答える 1

5

入力の長さもチェックするカスタム日付コンバーターを提供します。

@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" />
于 2013-03-13T18:12:56.093 に答える