1

我正在尝试将一些参数从一个托管 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 中,“发件人”已成功设置。问题是,当我到达moneyTransferBean 时,发件人变为空。我该怎么办,我做错了什么?

谢谢

4

1 回答 1

2

这里有两件事混合在一起。将一个 bean 注入另一个 bean 并向commandButton.

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

sender尝试通过 commandButton 设置作为参数发送,但没有实现。应更改 @ManagedProperty 注释以从命令按钮读取参数。我假设在提交之前将发件人设置在任何地方commandButton

@ManagedProperty(value="#{param.sender}")
private Account sender;

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

相关帖子

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

于 2013-07-11T08:22:36.480 回答