是否可以调用bean方法并直接从视图传递参数,而不是首先设置bean属性,然后使用commandButton或类似方法调用不带参数的方法?
我有一个项目列表,每个项目都有一个操作列表.为了减少状态,我使用单个曲面remoteCommand代替几个曲面commandButton.从视图中获取动作触发器时,我会调用remoteCommandfrom javascript,但由于它remoteCommand是一个但用于多个项目因此我需要传递项目的id.我想知道是否有办法将项目的id直接作为参数传递给bean方法,而不是先将其设置为bean属性?有没有办法这样做?
实际上,当页面上有很长的项目列表时,我正在寻找一种更好的方法来处理页面上的多个commandButtons.
建议?谢谢.
使用JSF 2.1.6 Mojarra和Primefaces 3.0RC1
Bal*_*usC 21
自从作为Servlet 3.0的一部分的EL 2.2以来,支持传递方法参数.因此,如果您的webapp在Servlet 3.0兼容容器(Tomcat 7,Glassfish 3等)上运行,并且web.xml声明符合Servlet 3.0规范(这可能是正确的,因为您使用的是JSF 2.1,而这反过来隐含地要求Servlet 3.0),那么您将能够以下面的形式将方法参数传递给bean操作方法:
<h:commandButton value="Submit" action="#{bean.submit(item.id)}" />
Run Code Online (Sandbox Code Playgroud)
同
public void submit(Long id) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
您甚至可以像以下一样传递值得满足的对象:
<h:commandButton value="Submit" action="#{bean.submit(item)}" />
Run Code Online (Sandbox Code Playgroud)
同
public void submit(Item item) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
如果您的目标是Servlet 2.5容器,那么您可以通过用例如支持相同构造的JBoss EL替换EL实现来实现相同的目的.另请参阅在EL中使用参数/变量/参数调用直接方法或方法.
use*_*882 10
是的.
<h:commandButton action="#{bean.method(object)}" />
Run Code Online (Sandbox Code Playgroud)
见http://www.mkyong.com/jsf2/4-ways-to-pass-parameter-from-jsf-page-to-backing-bean/
您可以使用这样的参数调用ManagedBean方法.
<h:commandButton actionListener="#{stateBean.delete(row.stateID)}"
value="Delete" id="btnDeleteS">
<f:ajax event="action" execute="@form" render="@form"/>
</h:commandButton>
Run Code Online (Sandbox Code Playgroud)
相应的ManagedBean就是这样的.
@ManagedBean
@RequestScoped
public class StateBean
{
@EJB
private RemoteInterface obj=null;
public void delete(String stateID)
{
//Code stuff here.
}
}
Run Code Online (Sandbox Code Playgroud)
您也可以使用<f:setPropertyActionListener></f:setPropertyActionListener>这样直接设置ManagedBean属性的值.
<h:commandButton value="Delete" id="btnDeleteS">
<f:setPropertyActionListener target="#{stateBean.someProperty}"
value="#{someValue}"/>
<f:ajax event="action" execute="@form" render="@form"/>
</h:commandButton>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
62472 次 |
| 最近记录: |