我正在尝试将一些参数从一个托管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时,发件人变为空。我该怎么办呢,我做错了什么?
由于
答案 0 :(得分:2)
这里有两件事情。将bean注入另一个bean并将参数添加到commandButton
。
Account sender
尝试注入MoneyTransferBean
,但由于没有getter setter,因此不会执行任何操作,因此注入将失败。
sender
作为参数发送,但没有实现。应更改@ManagedProperty注释以从命令按钮读取参数。我假设在提交commandButton
@ManagedProperty(value="#{param.sender}")
private Account sender;
还有其他方法可以在托管bean中发送或设置数据。请阅读BalusC的答案。
相关文章