必填字段的 JSF 验证

Posted

技术标签:

【中文标题】必填字段的 JSF 验证【英文标题】:JSF validation for required fields 【发布时间】:2011-08-14 07:19:33 【问题描述】:

假设我们有一个包含一些字段必需和一些不是(可选)的表单。 现在当我们说字段是必需的,那么验证器只会验证 输入,但不会先修剪输入然后验证。

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

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

那么正确的方法是什么。

使用 JSF 1.2

【问题讨论】:

【参考方案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();
    


无需在每个组件上注册。

【讨论】:

以上是关于必填字段的 JSF 验证的主要内容,如果未能解决你的问题,请参考以下文章

当我在 Primefaces 上打开带有必填字段的模态对话框时,如何阻止验证触发

PHP 表单验证 - 必填字段

如何防止提交但仍验证必填字段?

向 SharePoint Webpart 添加必填字段验证器

如何在javascript中验证之前修剪非必填字段

预提交必填字段验证 ASP .NET MVC