下拉列表与转换器相关联。 ajax在下拉值更改时有效。 但是,如果从下拉列表中选择“ - 选择 - ”项目,则ajax不会调用侦听器。我找不到任何好的解决方案。代码如下。f:ajax在下拉菜单下不起作用返回null
<h:selectOneMenu value="#{cc.attrs.beanProperty}" converter="myConverter" >
<f:selectItem itemValue="#{null}" itemLabel="-- Select --" />
<f:selectItems value="#{cc.attrs.list}" var="item" itemValue="#{item}" itemLabel="#{item.name}" />
<f:ajax render=":form1" listener="#{myBean.listener}"/>
</h:selectOneMenu>
转换器:
@FacesConverter(value = "myConverter")
public class VendorConverter implements Converter {
@Inject ObjectDAO dao;
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
if(value == null || value.contains("Select")){
return null;
}
return dao.find(Integer.valueOf(value));
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if(value == null) {
return null;
}
return ((MyObject) value).getId().toString();
}
}
任何人可以点解?
@BalusC,谢谢,从来没有使用过的那一个,我想这取决于设计者在这一个决定(我不喜欢的是,在页面元素由他们自己:)即使隐含消失的想法它可以解释和合理) – Daniel 2014-10-20 09:27:57