0
我使用JSF2.2和primefaces 5.2。JSF - 自定義標記 - selectonemenu - ajax監聽器
我的頁面包含Primefaces的本機代碼。 IT WORKS:與我的自定義標籤
<p:selectOneMenu id="continent" value="#{programController.continentCode}">
<p:ajax listener="#{programController.onContinentChange}"
update=searchForm:country"
immediate="true" />
<f:selectItems value="#{programController.continent.listResult}"
var="item"
itemLabel="#{item.name}" itemValue="#{item.code}" />
</p:selectOneMenu>
我的頁面。 它不工作:
<mp:select_one id="continent" rendered="true" required="false"
label="#{bundleMessage['label.key']}"
value="#{programController.continentCode}"
list="#{programController.continents.listResult}"
item_label="#{item.name}" item_value="#{item.code}"
listener="programController.onContinentChange"
update="search_form:country" immediate="true"/>
我的自定義標籤:
<p:selectOneMenu id="#{id}" styleClass="#{styleClass}" required="#{required}" value="#{value}" rendered="#{rendered}">
<p:ajax listener="#{listener}"
update="#{update}"
immediate="#{immediate}" />
<f:selectItems value="#{list}"
var="item"
itemLabel="#{item_label}" itemValue="#{item_value}" />
</p:selectOneMenu>
錯誤與自定義標籤的使用報告:
com.sun.faces.lifecycle.ApplyRequestValuesPhase execute
WARNING: /WEB-INF/mp-tags/select_one.xhtml @119,33 listener="#{listener}": Identity 'listener' does not reference a MethodExpression instance,
returned type: java.lang.String
javax.el.ELException: /WEB-INF/mp-tags/select_one.xhtml @119,33 listener="#{listener}": Identity 'listener' does not reference a MethodExpression instance, returned type: java.lang.String
我的控制器:
public void onContinentChange() {
LOGGER.logDebug(">>>>>>>>>>>>>>>>>>>> {%s}", continentCode);
countries = list("COUNTRY_BY_CONTINENT", new String[] {continentCode});
}
public ListBean getCountries() {
return countries;
}
感謝您的回答
如果我用這句話我檢索另一個錯誤,如「不能存在於內側programController名爲‘onContinentChange’屬性」 這是正確的,因爲它是一種方法不是一個屬性獲取/設置方法。 –
如果您在方法中添加括號,該怎麼辦:'「#{programController.onContinentChange()}」'? – Omar
listener =「programController.onContinentChange()」not work –