2013-12-22 71 views
0

我有一個帶有命令鏈接的DataModel表來導航到另一個頁面單擊。無法從DataModel表中的命令鏈接導航Primefaces,JSF

但導航沒有發生在DataModel表中,因爲當我點擊鏈接時,它選擇整個行,因爲它是一個DataModel。

我應該怎麼做才能使它作爲命令鏈接工作。

我的代碼的海賊王:

<p:dataTable id="studentDtTble" var="studmodel" value="#{studentController.dataModelList}"> 
    <p:columnGroup type="header"> 
     <p:row> 
       <p:column headerText="StudentId"></p:column> 
       <p:column headerText="StudentName"></p:column> 
       <p:column headerText="Add" ></p:column>  
     </p:row> 
    </p:columnGroup> 
     <p:column> 
      <p:commandLink id="ajax" update=""> 
       <h:outputText value="#{studmodel.studentId}" styleClass="txtlink" /> 
      </p:commandLink> 
     </p:column> 
     <p:column> 
      <h:outputText value="#{studmodel.studentName}" /> 
     </p:column> 
     <p:column > 
      <p:selectBooleanCheckbox value="#{studmodel.add}" /> 
     </p:column> 
</p:dataTable> 

當我點擊鏈接StudentId則應該導航到學生Information.jsf頁。 哪些不是發生。

要做到這一點我在控制器

studentInfo(studentID){ 
..Navigate to the Student Info Page .. 
} 

寫了個方法,但我不能調用該方法與studentId因爲它選擇爲一行。任何建議

+0

[JSF 2.X在兩個xhtml頁面之間傳遞參數]的可能重複(http://stackoverflow.com/questions/11539485/jsf-2-x-passing-parameter-between-two-xhtml-pages) – kolossus

回答

0

當你點擊它時選擇整行是數據表的默認行爲。您可以使用datatale選擇屬性,它指向一個對象像這樣

<p:dataTable id="studentDtTble" var="studmodel" value=#{studentController.dataModelList}" 
    selection="#{studentController.selectedItem}> 

,並在控制器,你應該有一個映射元素學生將selectedItem,我假設學生作爲對象。你的方法應該有一個String作爲返回類型來執行導航。你可以在faces-config.xml中定義一個導航規則。

或者

您可以使用命令鏈接(操作方法必須字符串作爲返回類型)的action屬性,並通過學生證類似下面使用

<f:setPropertyctionListener value="#{studmodel.studentId}" target="any string 
    in controller /> as a child element in commandLink 

希望這hepls :)