JSF:<f:convertdatetime type =“date”pattern =“mm / DD / yyyy”> </f:convertdatetime>

时间:2013-03-06 05:37:11

标签: java jsf icefaces

我有一个使用convertDateTime的JSF日期组件,它接受“12/12 / 2013ab”

支持bean将“12/12/2013”​​作为日期返回

我可以知道如何阻止用户输入“12/12 / 2013ab”。它将提示12 / 1a / 2013的错误。

1 个答案:

答案 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);
    }

}

(请注意,patternMM/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" />