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

时间:2013-12-22 16:27:45

标签: jsf jsf-2 primefaces

我有一个带有命令链接的DataModel表,可以在点击时导航到另一个页面。

但导航不在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链接时,它应该导航到Student Information.jsf页面。 这不是发生的事。

为了实现这一点,我在控制器中写了一个方法

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

但我无法使用该studentId调用方法,因为它正在选择一行。任何建议

1 个答案:

答案 0 :(得分:0)

单击它时选择的整行是数据表的默认行为。您可以使用datatale的selection属性并将其指向像这样的对象

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

并且在控制器中你应该有一个映射元素Student selectedItem,我假设学生是你的对象。您的方法应该有一个String作为返回类型来执行导航。您可以在faces-config.xml中定义导航规则。

您可以使用命令Link的action属性(action方法必须将String作为返回类型)并使用

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

希望这个问题:)