【问题标题】:Empty string with multiple blank problem in JSF - SPRING - HIBERNATEJSF - SPRING - HIBERNATE中存在多个空白问题的空字符串
【发布时间】:2010-11-23 23:09:24
【问题描述】:

我有一个简单的问题。 我需要捕捉用户在表单中输入空字符串并显示适当的错误消息。 我正在尝试使用 jsf required 属性,但是如果用户输入“”这样的字符串,则下一步验证不会出错。 我尝试过 Spring 注释 @NotNull 和 Hibernate @NotEmpty,但没有解决问题。 有什么想法吗?

【问题讨论】:

    标签: string hibernate spring jsf


    【解决方案1】:

    我不确定 Spring 部分,但在 Hibernate 中,您可以为此使用 @NotBlank 注释:

    @NotBlank
    private String value;
    

    或者,您可以为 String.class 创建一个 JSF 转换器来完成这项工作:

    package com.example;
    
    import javax.faces.component.EditableValueHolder;
    import javax.faces.component.UIComponent;
    import javax.faces.context.FacesContext;
    import javax.faces.convert.Converter;
    import javax.faces.convert.FacesConverter;
    
    @FacesConverter(forClass=String.class)
    public class EmptyToNullConverter implements Converter {
    
        public Object getAsObject(FacesContext facesContext, UIComponent component, String value) {
            if (value == null || value.trim().isEmpty()) {
                if (component instanceof EditableValueHolder) {
                    ((EditableValueHolder) component).setSubmittedValue(null);
                }
                return null;
            }
            return value;
        }
    
        public String getAsString(FacesContext facesContext, UIComponent component, Object value) {
            return (value == null) ? null : value.toString();
        }
    
    }
    

    【讨论】:

    • 好的,最后一个解决方案效果很好。对于@NotBlank,我无法使用它,因为我必须使用的唯一注释是@NotEmpty。也许是因为我使用的是 Hibernate 3.2.5?
    • 不客气。在后来的 Hibernate 版本中确实引入了它。
    • 好的,如果我想使用 Spring 注释,没有解决方案吗?但是,对于您的最后一个解决方案,如果我已经使用转换器,我需要合并代码吗?或者有一个解决方案可以让我使用 2 转换器?
    猜你喜欢
    • 2012-06-26
    • 2023-02-14
    • 1970-01-01
    • 1970-01-01
    • 2019-10-10
    • 1970-01-01
    • 2014-05-29
    • 2015-01-23
    • 2019-05-14
    相关资源
    最近更新 更多