dataList内的Commandlink无法正常工作

时间:2013-02-12 08:25:24

标签: jsf primefaces datalist commandlink

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

2 个答案:

答案 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">
    ...