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 回答