dataTable中的JSF commandlink无法正常工作

时间:2018-01-21 11:58:35

标签: jsf

点击以下代码中的commandLink按钮不会重定向到目标网页:

<h:form>
   <h:dataTable value="#{studentController.students}" var="studentData" >
      <h:column>
         <f:facet name="header">Action</f:facet>
         <h:commandLink value="Update" action="update.xhtml"/>
      </h:column>
   </h:dataTable>               
</h:form>

1 个答案:

答案 0 :(得分:-1)

这不是h:commandLink的工作原理。看看the documentation。属性action应包含

  

javax.el.MethodExpression   (签名必须与java.lang.Object action())

匹配      

MethodExpression,表示用户激活此组件时要调用的应用程序操作。表达式必须求值为不带参数的公共方法,并返回一个Object(调用toString()以获取逻辑结果),该对象将传递给此应用程序的NavigationHandler。

所以看起来应该是这样的:

<h:commandLink value="Update" action="#{someBean.action}" />

你的bean应该有一个方法:

public String action() {
    // Do something
    return "update";
}

faces-config.xml中,您应该添加导航规则:

<navigation-rule>
    <from-view-id>/list.xhtml</from-view-id>
    <navigation-case>
        <from-outcome>update</from-outcome>
        <to-view-id>/update.xhtml</to-view-id>
    </navigation-case>
</navigation-rule>

您可以直接在action属性中使用结果并跳过Java方法来简化所有这些。

<h:commandLink value="Update" action="update"/>