我在facelets“ numbers.xhtml”中有以下简单代码:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:c="http://java.sun.com/jsp/jstl/core">
  <body>
    <h1>Numbers page</h1>
  <table>
    <c:forEach var="number" items="#{numbers}">
    <tr>
        <td>
          <h:form>
          <h:commandLink action="#{numbers.showNumber}" value="#{number.number}" />
          </h:form>
        </td>
    </tr>
    </c:forEach>
  </table>
</body>
</html>


在“ showNumber”方法中,我只返回字符串“ number”,该字符串已在faces-config.xml中映射为“ number.xhtml”,但始终打开“ numbers.xhtml”页面。

我什至尝试使用“ ui:repeat”标签,但结果相同。如果我将“ h:commandLink”放在循环外,它将起作用。

您有一个简单的测试用例here。这是maven项目,您只需执行“ ./run_jetty.sh”即可运行简单的码头服务器。

最佳答案

刚看到附加的src,我认为您需要一个getter方法:getShowNumber()类中的Numbers。您可能想将public static String showNumber重命名为public static String getShowNumber

关于java - Java Server Faces链接在循环内不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6648543/

10-12 04:57