我的selectonemenu在选择一个选项后既不调用setter也不调用getter。地图在下拉菜单中正确显示。
下面是我的代码: <p:selectOneMenu id="filter" value="#{myPatientsBean.selectedFilter}"
valueChangeListener="#{myPatientsBean.activateDefaultFilter}">
<f:selectItems value="#{myPatientsBean.defaultFilterEntries.entrySet()}" var="map" itemValue="#{map.value}" itemLabel="#{map.key}"/>
<p:ajax update="patientdata" event="change" />
</p:selectOneMenu>
这是后台Bean:
public Map<String, String> getDefaultFilterEntries() {
return getPatientForFilter().getDefaultFilterEntries(getCurrentUser().hasRight(UserRight.PATIENTVIEWALL));
}
public void setSelectedFilter(String index) {
selectedFilter = Integer.parseInt(index);
if (selectedFilter == -1) {
setUseDefaultFilter(false);
}
}
public String getSelectedFilterString() {
return Integer.toString(selectedFilter);
}
ValueChangeListener也被调用了…
我将非常感激你的帮助。几乎什么都试过了:(一个列表也不能解决我的问题。
只需删除valueListener并替换ajax标签,如下所示
<p:ajax listener=#{myPatientsBean.activateDefaultFilter}" update="patientdata" />
这不是问题所在。我有答案了。我只是搞混了getter和setter的类型。我刚刚有一个整数Setter,但需要一个字符串Setter。剩下的代码是正确的。