【问题标题】:Unable to Navigate from a Command Link in a DataModel Table Primefaces,JSF无法从 DataModel 表 Primefaces、JSF 中的命令链接导航
【发布时间】:2013-12-22 16:27:45
【问题描述】:

我有一个带有命令链接的 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 调用方法,因为它选择为一行。任何建议

【问题讨论】:

标签: jsf jsf-2 primefaces


【解决方案1】:

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

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

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

或者

您可以使用命令链接的动作属性(动作方法必须具有字符串作为返回类型)并使用如下所示传递学生ID

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

希望这能帮到你:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    • 2015-12-29
    相关资源
    最近更新 更多