我正在将我的项目从 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转换器的情况下,只有在选择了正确的值时才会调用转换器,否则会显示“需要值”。
请告诉我,我在这里失踪了...... 感谢和帮助...
提前致谢
答案 0 :(得分:0)
上述问题是由于a4j:commandlink具有reRender属性,我将其替换为render属性,现在消息显示出来。
但现在问题是
*如果 required = true 不存在,我选择 noSelectionOption ,那么它将在DB中存储空白值。 是必要在 jsf 2 中为 noSelectionOption提供验证器 ????
由于