我有多个下拉菜单,我的JSF / ICEFaces应用程序相互更新,因此根据其他内容的选择更新。
问题是菜单发送的值不正确。它似乎之前发送的值而不是当前的值!不知道为什么!
有什么想法吗?
谢谢,
担
<td>
<ice:selectOneMenu id="selectCurApplNm"
value="#{statsDisplayAndFilter.applIDFilterPhrase}"
disabled="#{statsDisplayAndFilter.disableCurrentApplIdNamesMenu}"
valueChangeListener="#{statsDisplayAndFilter.fetchEventNames}"
partialSubmit="true" immediate="true">
<f:selectItem itemValue="" itemLabel="" />
<f:selectItem itemValue="all" itemLabel="all" />
<f:selectItems id="selectCurApplNmItems"
value="#{statsDisplayAndFilter.currentApplIdItems}" />
</ice:selectOneMenu>
</td>
</tr>
<tr>
<td>
<ice:outputLabel for="SlctCompTyp" value="Event Name: " />
</td>
<td>
<ice:selectOneMenu id="SlctCompTyp"
value="#{statsDisplayAndFilter.eventNameFilterPhrase}"
disabled="#{statsDisplayAndFilter.disableEventNamesMenu}"
valueChangeListener="#{statsDisplayAndFilter.fetchMethodNames}"
partialSubmit="true" immediate="true">
<f:selectItem itemValue="" itemLabel="" />
<f:selectItem itemValue="all" itemLabel="all" />
<f:selectItems id="SlctcompTypeItms"
value="#{statsDisplayAndFilter.eventNameItems}" />
</ice:selectOneMenu>
</td>
</tr>
答案 0 :(得分:1)
我发现当它调用valueChangeListener中定义的方法时,该值尚未绑定到正确的变量,所以我不得不使用事件变量来获取新值:
public void fetchEventNames(ValueChangeEvent e) throws SQLException{
String filteringOptions = "";
String newSelectedValue = e.getNewValue().toString();
.....
这解决了问题