使用 JSF 页面中的参数调用 bean 方法

2024-02-15

是否可以调用 bean 方法并直接从视图向它们传递参数,而不需要首先设置 bean 属性,然后使用 commandButton 或类似的方法调用不带参数的方法?

我有一个项目列表,每个项目都有一个操作列表。为了减少状态,我使用单个素面remoteCommand, 代替几个commandButton(s)。从视图中获取操作触发器时,我会调用remoteCommand来自 javascript 但自从remoteCommand是一个但用于多个项目,因此我还需要传递该项目的 id。我想知道是否有一种方法可以将项目的 id 作为参数直接传递给 bean 方法,而不是首先将其设置为 bean 属性?有什么办法可以做到吗?

实际上,当页面上有很长的项目列表时,我正在寻找一种更好的方法来处理页面上的多个命令按钮。

建议?谢谢。


将 JSF 2.1.6 Mojarra 与 Primefaces 3.0RC1 结合使用


从 EL 2.2 开始支持传递方法参数,EL 2.2 是 Servlet 3.0 的一部分。因此,如果您的 Web 应用程序在 Servlet 3.0 兼容容器(Tomcat 7、Glassfish 3 等)上运行,并带有web.xml声明符合 Servlet 3.0 规范(这可能是正确的,因为您使用的是 JSF 2.1,而 JSF 2.1 又隐式需要 Servlet 3.0),那么您将能够以以下形式将方法参数传递给 bean 操作方法:

<h:commandButton value="Submit" action="#{bean.submit(item.id)}" />

with

public void submit(Long id) {
    // ...
}

您甚至可以传递完整的对象,如下所示:

<h:commandButton value="Submit" action="#{bean.submit(item)}" />

with

public void submit(Item item) {
    // ...
}

如果您的目标是 Servlet 2.5 容器,那么您可以通过将 EL 实现替换为支持相同构造的 JBoss EL 来实现相同的目的。也可以看看在 EL 中调用直接方法或带有参数/变量/参数的方法 https://stackoverflow.com/questions/3284236/jsf-2-0-method-invocation.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 JSF 页面中的参数调用 bean 方法 的相关文章

随机推荐