【问题标题】:How to pass method arguments to an ActionListener?如何将方法参数传递给 ActionListener?
【发布时间】:2012-02-23 09:43:32
【问题描述】:

我正在创建一个动态生成的菜单。在数据库中,我已经存储了每个子菜单的目录 (String),并存储在 bean 中的 ArrayList 中。这是代码的一部分:

<c:forEach items="#{controlWeb.algorithms}" var="alg">
    <h:form>
        <h:commandLink actionListener="#{controlWeb.setContent(PROBLEM)}"  value="About"/>
    </h:form>
</c:forEach>

问题出在“问题”中。我想写#{alg.algorithm1},但它不起作用,因为我认为嵌套 EL 表达式是不可能的。

actionListenerString #{alg.algorithm1} 设置为另一个String。我怎样才能达到要求?

【问题讨论】:

    标签: jsf-2 el


    【解决方案1】:

    使用action,而不是actionListeneractionListener 必须绑定到以ActionEvent 作为唯一参数的方法,没有任何借口。此外,actionListener 的目的不是调用 操作,而是监听 操作(以便您可以记录它或执行一些预处理任务或其他)。

    <c:forEach items="#{controlWeb.algorithms}" var="alg">
        <h:form>
            <h:commandLink action="#{controlWeb.setContent(alg.algorithm)}" value="About"/>
        </h:form>
    </c:forEach>
    

    请注意,EL 2.2 之后才支持在 EL 中传递参数,EL 2.2 随 Servlet 3.0 / Java EE 6 一起提供。您需要确保您的目标是与 Servlet 3.0 兼容的容器以及与 Servlet 3.0 兼容的web.xml

    另见:

    【讨论】:

    • 再次感谢 BalusC,感谢您这么快地学习 JSF。
    猜你喜欢
    • 1970-01-01
    • 2012-04-13
    • 2011-07-18
    • 2013-12-14
    • 2021-12-13
    • 2011-07-25
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多