在托管bean之间传递参数

时间:2013-07-11 07:53:49

标签: java jsf java-ee javabeans

我正在尝试将一些参数从一个托管bean传递到另一个托管bean。我看到了类似的问题并应用了他们的解决方案但是没有用。这是代码:

在我的moneytransfer.xhtml文件中:

<h:commandButton action="#{moneyTransferBean.transferAccounts()}" value="Continue">
   <f:param name="sender" value="#{extTableSelectionBean.sender}" />
</h:commandButton>

我的extTableSelectionBean:

@ManagedBean
@ViewScoped
public class ExtTableSelectionBean implements Serializable {
    private Account sender;

    public void setSender(Account sender){
        this.sender=sender;
    }


    public Account getSender(){
        return sender;
    }

和moneyTransferBean:

@ManagedBean
@ViewScoped
public class MoneyTransferBean {
     @ManagedProperty("#{extTableSelectionBean .sender}")
     private Account sender;
     //NO SETTER-GETTER FOR sender here

     public void transferAccounts() throws IOException {        

         if (sender != null)
         {  
             FacesContext.getCurrentInstance().getExternalContext().redirect("transferaccount.xhtml");
         }
     }
}

我看到在extTableSelectionBean中,成功设置了“sender”。问题是,当我到达moneyTransferBean时,发件人变为空。我该怎么办呢,我做错了什么?

由于

1 个答案:

答案 0 :(得分:2)

这里有两件事情。将bean注入另一个bean并将参数添加到commandButton

Account sender尝试注入MoneyTransferBean,但由于没有getter setter,因此不会执行任何操作,因此注入将失败。

尝试通过commandButton设置

sender作为参数发送,但没有实现。应更改@ManagedProperty注释以从命令按钮读取参数。我假设在提交commandButton

之前,发件人已在任何地方设置
@ManagedProperty(value="#{param.sender}")
private Account sender;

还有其他方法可以在托管bean中发送或设置数据。请阅读BalusC的答案。

相关文章

https://stackoverflow.com/a/4994833/892994