2013-02-12 42 views
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所學校的城市時,只有三個聯繫工作,兩個聯繫不上班。有沒有解決這個問題的方法?dataList中的命令鏈接不起作用

+0

也許你的意思是process =「@ this」,而不是process =「@ all」 – Darka 2013-02-12 08:55:19

回答

1

您錯過了< p:dataTable>組件的rowKey屬性,因此我假定您正在使用PrimeFaces的早期版本(如版本2.2)。

有一些老版本的primefaces存在已知錯誤,其中從dataTable中調用的ajax事件不會正確更新頁面的內容。

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

然而,更根本的問題可能只是簡單得多:

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

你有這樣的commandLink組件更新,你永遠不用於提供代碼的ID。這是不可能的,如果在這裏沒有其他錯誤。同時,我建議您嘗試使用Javascript來調用dataTable之外的commandLink或commandButton中的click事件,以查看是否可以解決您的問題。如果沒有,那麼你應該考慮升級到更新版本的PrimeFaces。

0

我遇到了使用dataList的同樣的問題。這有助於:

<p:dataList type="definition"... 
    <f:facet name="description"> 
    ...