2013-07-11 150 views
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時,發件人變爲空。我應該怎麼做,我做錯了什麼?

謝謝

回答

2

這裏有兩件事情混在一起。將bean注入另一個bean並添加參數到commandButton

Account sender試圖注入到MoneyTransferBean,但是由於沒有getter setter,所以不會執行任何操作,所以注入將失敗。

sender試圖通過commandButton設置爲發送參數,但沒有實現它。應該改變@ManagedProperty註解來從命令按鈕讀取參數。我認爲發送方在任何地方的commandButton

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

提交之前有其他方法在託管豆發送或設定數據集。請閱讀BalusC的答案。

相關的職位

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

+0

謝謝你的答案 – yrazlik

+0

歡迎您。 – erencan