2013-01-17 140 views
0

我在p:datatable中使用primefaces命令鏈接,並在用戶單擊鏈接時使用。它應該導航到另一個頁面,包括從表中選擇的對象的特定信息。我不使用任何ajax標籤。問題是,當第一次點擊鏈接時,它不會調用動作,實際上什麼也沒有發生,並且第二次點擊它就可以工作。這裏是我的代碼:p:commandLink在p:dataTable不會在第一次點擊時調用動作,但只在第二次點擊時調用

JSF與數據表

<h:form> 
     <h:outputText value="Nothing is found" rendered="#{searchView.citizenSearchList.rowCount==0}"/> 

     <p:dataTable var="cust" value="#{searchView.citizenSearchList}" dynamic ="true" paginator="true" rows="5" paginatorAlwaysVisible="false" style="width: 700"> 
      <p:column> 
       <f:facet name ="header"> 
        <h:outputText value="name "/> 
       </f:facet> 
       <h:outputText value="#{cust.name}"/> 
      </p:column> 
      <p:column> 
       <f:facet name ="header"> 
        <h:outputText value="lastname "/> 
       </f:facet> 
       <h:outputText value="#{cust.citizenList.get(0).lastname}"/> 
      </p:column> 
      <p:column> 
       <f:facet name ="header"> 
        <h:outputText value="Id "/> 
       </f:facet> 
       <h:outputText value="#{cust.registernumber}"/> 
      </p:column> 
      <p:column> 
       <f:facet name ="header"> 

       </f:facet> 
       <p:commandLink value="See" action="#{customerView.prepareCitizenView()}"/> 
      </p:column> 
     </p:dataTable> 

    </h:form> 

ManagedBean:customerView的操作方法

@ManagedProperty(...) 
SearchView searchview; 
public String prepareCitizenView(){ 
    this.customer = (Customer) searchview.citizenSearchResultList.getRowData(); 
    if(this.customer != null) 
     return "citizeninfo"; 
    else 
     FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "no data.", "no data")); 
     return null; 


} 

ManagedBean:搜索查看

DataModel citizenSearchResultList; 

public DataModel getCitizenSearchResultList() { 
    return citizenSearchResultList; 
} 
+0

默認情況下,PrimeFaces'p:commandLink'和'p:commandButton'使用ajax。所以聲明「我不使用任何ajax標籤」沒有理由。問題是,你究竟如何執行實際的搜索行爲,應該在該表中顯示結果?還有一個'p:commandButton'? – BalusC

回答

0

您可以返回重定向到同一頁面。 customerView.prepareCitizenView可以重定向到同一頁面。根據你使用什麼

0

由於穆罕默德徹納爾指出 像

return "citizeninfo.jsf?faces-redirect=true"; 

這個「JSF」的轉變,解決方法是在你的導航結果使用重定向。我自己有這個問題。

return「citizeninfo.jsf?faces-redirect = true」;

從我可以推斷,原因是ajax提交將不包含新頁面的ViewState請求參數。第一次沒有ViewState的時候,事情就會崩潰。

一旦執行重定向,重定向將正確地具有附加到所述請求的視圖狀態參數,和按鈕可點擊第一次

0

如果p:commandLink包含2個小時內:形式然後行動將是在第二次調用時調用。 檢查p的外部標籤:commandLink

相關問題