为了在JSF bean验证中转换String值,将使用哪个转换器?
与数字值一样,我们使用<f:convertNumber>
,对于日期,我们使用<f:convertDataTime>
。
我的代码snipest如下:
JSF页面:
<h:inputText id="Name" label="Name" value="#{employee.eName}"/>
<h:message for="Name" styleClass="errorMessages"/>
Bean类:
public class Employee implements Serializable{
@NotNull @Size(min = 3, max = 30)
String eName;
}
答案 0 :(得分:3)
String
没有默认转换器。请求参数已经String
。
如果您打算在String
上挂钩自定义转换器,请使用
@FacesConverter(forClass=String.class)
public class StringConverter implements Converter {
// ...
}
我见过的唯一用例是将它们设置为null
而不是空字符串,但这也可以通过在web.xml
中设置以下上下文参数来实现。
<context-param>
<param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
<param-value>true</param-value>
</context-param>
这样,当您提交空字符串时,将触发@NotNull
注释。否则,您必须使用特定于Hibernate的@NotBlank
。