无法从DataModel表中的命令链接导航Primefaces,JSF

问题描述:

我有一个带有命令链接的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://*.com/questions/11539485/jsf-2-x-passing-parameter-between-two-xhtml-pages) – kolossus

当你点击它时选择整行是数据表的默认行为。您可以使用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 :)