2010-11-23 25 views
2

我有一个简单的问题。 当用户在窗体中输入空字符串并显示相应的错误消息时,我需要捕获它。 我正在尝试使用jsf必需的属性,但是如果用户输入“”这样的字符串,那么验证会在没有错误的情况下执行。 我曾尝试使用Spring注解@NotNull和Hibernate @NotEmpty,但没有解决问题。 有什么想法?空字符串与JSF中的多个空白问题 - 春节--HIBERNATE

回答

2

我不知道春天的一部分,但在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(); 
    } 

} 
+0

好的,最后的解决方案很好。 对于@NotBlank我无法工作,因为唯一必须使用的注释是@NotEmpty。 也许是因为我使用Hibernate 3.2.5? – 2010-11-23 23:30:40