简体   繁体   English

Java 服务器面临链接在循环内不起作用

[英]Java server faces link doesn't work inside loop

I have this simple code in facelets "numbers.xhtml":我在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>

In "showNumber" method I just return string "number" which is mapped in faces-config.xml to "number.xhtml" but it always opens "numbers.xhtml" page.在“showNumber”方法中,我只是将在 faces-config.xml 中映射的字符串“number”返回到“number.xhtml”,但它总是打开“numbers.xhtml”页面。

I even tried with "ui:repeat" tag but same results.我什至尝试使用“ui:repeat”标签,但结果相同。 If I put "h:commandLink" outside loop it works.如果我将“h:commandLink”放在循环之外,它就可以工作。

You have simple test case here .在这里有简单的测试用例。 It is maven project and you need just to execute "./run_jetty.sh" to run simple jetty server.它是 maven 项目,您只需执行“./run_jetty.sh”即可运行简单的码头服务器。

Just saw the src you attached, I think you need a getter method: getShowNumber() in your Numbers class.刚刚看到您附加的 src,我认为您需要一个 getter 方法:您的Numbers class 中的getShowNumber() You might want to rename public static String showNumber to public static String getShowNumber .您可能希望将public static String showNumber重命名为public static String getShowNumber

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM