我在過去的2天裏一直堅持這樣做,並且很難理解Primefaces如何根據它們的ID更新客戶端上的UI組件。在onchange事件被觸發後,JSF 2/Primefaces p:ajax沒有更新面板
我有一個h:selectOneMenu計數面板的數量顯示。每個p:面板都將包含一個包含衆多表單元素的panelGrid。下拉菜單中的onchange事件被觸發,我可以看到Managed Bean中的計數。雖然我沒有看到在客戶端動態增加面板,但我認爲p:ajax params有問題,但我完全不瞭解它是如何工作的。這裏是相關代碼:
<h:selectOneMenu id="numapps" value="#{mbean.appCount}">
<f:selectItem itemLabel="1" itemValue="1" />
<f:selectItem itemLabel="2" itemValue="2" />
<f:selectItem itemLabel="3" itemValue="3" />
<f:selectItem itemLabel="4" itemValue="4" />
<f:selectItem itemLabel="5" itemValue="5" />
<p:ajax update="appsContainer" event="change"
listener="#{mbean.onChangeNumApps()}" />
</h:selectOneMenu>
<p:panel id="appsContainer" >
<p:panel header="Application" id="appsPane" value="#{mbean.submittedApps}" var="app" multiple="true">
submittedApps是一個包含面板表單元素的列表。這是我的MBean偵聽:
public void onChangeNumApps()
{
List<Apps> c = new ArrayList<Apps>();
logger.info("on change event fired");
logger.info("new value is "+mbean.getAppCount());
for (int i=0;i < mbean.getAppCount();i++)
{
c.add(new App());
}
mbean.setSubmittedApps(c);
}
我混號碼:阿賈克斯與H:selectone因爲我無法獲得號碼:selectone工作出於某種原因 - 可能是因爲我的樣式表一個CSS碰撞?