<h:form id="myform">
<h:panelGrid columns="1" cellpadding="10">
<p:selectOneMenu id="suburbs" value="#{cityBean.cityName}" style="width: 200px" >
<f:selectItems value="#{cityBean.cityNames}" style="width: 200px"/>
<p:ajax update="@form"
listener="#{cityBean.handleCityChange}" />
</p:selectOneMenu>
<p:dataTable style="padding: 20px" value="#{cityBean.getSchoolList()}" var="school" id="schools" >
<f:facet name="header">
Okullar
</f:facet>
<p:column>
<p:commandLink async="false" process="@all" value="#{school.schoolName}" update=":tabv" title="View Detail" action="#{cityBean.schoolAction(school.schoolId)}"/>
</p:column>
<br></br>
<br></br>
</p:dataTable>
</h:panelGrid>
</h:form>
首页打开时,数据表中有3个学校,所有这三个链接都在工作。当我选择另一个拥有5所学校的城市时,只有三个链接工作,两个不工作。有没有解决这个问题的方法?
答案 0 :(得分:1)
您错过了&lt; rowKey
组件中的p:dataTable>
属性,因此我假设您使用的是早期版本的PrimeFaces,例如版本2.2。
对于旧版本的primefaces存在已知错误,其中从dataTable中调用的ajax事件无法正确更新页面内容。
http://blog.primefaces.org/?p=2119
然而,从根本上说,问题可能比这更简单:
<p:commandLink ... update=":tabv" ... />
您有此commandLink组件更新您从未提供代码的ID。如果这里没有其他错误就不可能说出来。在此期间,我建议您尝试使用Javascript在dataLink之外的commandLink或commandButton中调用click事件,以查看是否能解决您的问题。如果没有,那么你应该考虑升级到更新版本的PrimeFaces。
答案 1 :(得分:0)
我使用dataList遇到了同样的问题。这有助于:
<p:dataList type="definition"...
<f:facet name="description">
...