必填字段的JSF验证

时间:2011-04-28 00:06:24

标签: jsf validation

假设我们的表单包含必需字段,而某些字段 可选
现在当我们说需要字段时,验证器只会验证字段的长度 输入但不会先修剪输入然后验证。

为了解决这个问题,我写了一个名为表单提交的javascript函数。 但它也会验证可选字段。

在所有输入字段中添加转换器并不优雅 也是他们可以覆盖必需验证过程的任何方式 或者我如何识别 javascript 中的可选输入字段。

这样做的正确方法是什么。

使用JSF 1.2

1 个答案:

答案 0 :(得分:1)

如果您在<converter-for-class>而不是<converter-id>上注册转换器,那么它将应用于所有值类型。

<converter>
    <converter-for-class>java.lang.String</converter-for-class>
    <converter-class>com.example.EmptyToNullConverter</converter-class>
</converter>

public class EmptyToNullConverter implements Converter {

    @Override
    public Object getAsObject(FacesContext facesContext, UIComponent component, String value) {
        if (value == null || value.trim().length() == 0) {
            if (component instanceof EditableValueHolder) {
                ((EditableValueHolder) component).setSubmittedValue(null);
            }
            return null;
        }
        return value;
    }

    @Override
    public String getAsString(FacesContext facesContext, UIComponent component, Object value) {
        return value == null ? null : value.toString();
    }

}

无需在每个组件上注册。