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

Rob*_*rto 4 el jsf-2

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

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

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

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

Bal*_*usC 11

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

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

请注意,只有从Servlet 3.0/Java EE 6中提供的EL 2.2起,才支持在EL中传递参数.您需要确保使用与Servlet 3.0兼容的Servlet 3.0兼容容器web.xml.

也可以看看: