我在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”来运行简单的jetty服务器。
答案 0 :(得分:1)
刚看到你附加的src,我认为你需要一个getter方法:getShowNumber()
类Numbers
。您可能希望将public static String showNumber
重命名为public static String getShowNumber
。