JSF 2,带转换器的noSelectionOption,不能正常工作

时间:2013-06-03 15:12:03

标签: jsf jsf-2 converter selectonemenu

我正在将我的项目从 seam 2 迁移到 JSF 2.x

对于enum的 seam 2 ,我们有

<s:convertEnum /> 

当选择了正确的值而不是noSelectionOption值时,它将调用转换器。

JSF 2.x 中,我创建了我的自定义转换器

@Named("enumConverter")
@ApplicationScoped
public class EnumConverter implements Converter {

public Object getAsObject(FacesContext context, UIComponent component, String key) 
        throws ConverterException {
if(!key.equalsIgnoreCase("-- Choose one --")){
    // DO LOGIC
}
return null;
}

public String getAsString(FacesContext context, UIComponent component, Object object) {
}

现在问题出在我看来我正在使用 像

这样的转换器
<h:selectOneMenu value="#{user.DocumentType}" required="true">
       <f:selectItem itemLabel="-- Choose one --" itemValue="#{null}" noSelectionOption="true"/>
        <f:selectItems value="${user.Constants(user.statuses)}"
            var="Val" itemLabel="#{user.Display(Val)}" 
        />
        <f:converter converterId="enumConverter"></f:converter> 
    </h:selectOneMenu>

如果我选择 NoSelectionOption ,那么我的转换器也会被调用,,,这不应该发生,只有在需要正确的值时才应该调用它

在接缝2转换器的情况下,只有在选择了正确的值时才会调用转换器,否则会显示“需要值”

请告诉我,我在这里失踪了...... 感谢和帮助...

提前致谢

1 个答案:

答案 0 :(得分:0)

上述问题是由于a4j:commandlink具有reRender属性,我将其替换为render属性,现在消息显示出来。

但现在问题是

*如果 required = true 不存在,我选择 noSelectionOption ,那么它将在DB中存储空白值。 是必要 jsf 2 中为 noSelectionOption提供验证器 ????

由于