1
               <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 所学校的城市时,只有三个链接在工作,两个不工作。这个问题有什么解决办法吗?

4

2 回答 2

1

您缺少rowKey< 组件中的属性,p:dataTable>因此我假设您使用的是 PrimeFaces 的早期版本,例如 2.2 版。

旧版本的 primefaces 存在已知错误,其中从 dataTable 中调用的 ajax 事件无法正确更新页面内容。

http://blog.primefaces.org/?p=2119

然而,从根本上说,问题可能比这更简单:

<p:commandLink ... update=":tabv" ... />

你有这个 commandLink 组件更新你从未提供过代码的 id。如果这里没有其他问题,就不可能说。同时,我建议您尝试使用 Javascript 在 dataTable 之外的 commandLink 或 commandButton 中调用点击事件,看看是否能解决您的问题。如果没有,那么您应该考虑升级到更新版本的 PrimeFaces。

于 2013-02-12T13:45:32.970 回答
-1

我在使用 dataList 时遇到了同样的问题。这有助于:

<p:dataList type="definition"...
    <f:facet name="description">
    ...
于 2014-02-07T14:23:59.110 回答