如何将方法参数传递给ActionListener?

时间:2012-01-31 16:50:57

标签: jsf-2 el

我正在创建一个动态生成的菜单。在数据库中,我存储了每个子菜单的目录(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。我怎样才能达到要求?

1 个答案:

答案 0 :(得分:10)

使用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>

请注意,只有在Servlet 3.0 / Java EE 6中附带的EL 2.2之后才支持在EL中传递参数。您需要确保使用兼容Servlet 3.0的Servlet 3.0兼容容器{{1} }。

另见: