Jsf 从另一个bean调用一个bean并设置该bean的值,然后从另一个bean显示
我有一个由托管bean支持的对话框Jsf 从另一个bean调用一个bean并设置该bean的值,然后从另一个bean显示,jsf,primefaces,managed-bean,Jsf,Primefaces,Managed Bean,我有一个由托管bean支持的对话框@RequestScoped'a'。我从另一个bean调用该对话框'B'也@RequestScoped。因此,我使用@ManagedProperty从'B'调用'A'。我已经从'B'中设置了'A'的值(对象、变量等),以根据'B'的对象进行显示。所有值都设置正确,但当对话框打开时,我为'A'设置的值不会显示 如何实现这个目标 我的意思是调用一个由一个bean支持的对话框,并设置另一个bean支持的bean的值 我使用了p:dataTable行上的一个按钮: &l
@RequestScoped
'a'
。我从另一个bean调用该对话框'B'
也@RequestScoped
。因此,我使用@ManagedProperty
从'B'
调用'A'
。我已经从'B'
中设置了'A'
的值(对象、变量等),以根据'B'
的对象进行显示。所有值都设置正确,但当对话框打开时,我为'A'
设置的值不会显示
如何实现这个目标
我的意思是调用一个由一个bean支持的对话框,并设置另一个bean支持的bean的值
我使用了p:dataTable
行上的一个按钮:
<p:column headerText="Actions">
<p:commandButton icon="ui-icon-search" title="View"
process="@this"
oncomplete="receiptViewWidget.show()"
action="#{receiptRepoMB.forReceiptDialog}">
<f:setPropertyActionListener
target="#{receiptRepoMB.receiptDetObj}" value="#{rd}" />
</p:commandButton>
</p:column>
这里的问题是,当您尝试访问A时,从B使用的A的值将丢失 我建议您使用更长的范围定义A,以便在B调用时保持其值。(类似@ViewScoped的东西应该可以工作) 我刚刚在
p:commandButton
中添加了update=“:receiptViewForm”
,这是对话框的表单id
<p:commandButton icon="ui-icon-search" title="View"
process="@this" oncomplete="receiptViewWidget.show()"
action="#{receiptRepoMB.forReceiptDialog}"
update=":receiptViewForm">
<f:setPropertyActionListener target="#{receiptRepoMB.receiptDetObj}"
value="#{rd}" />
</p:commandButton>
它刚刚起作用。别忘了为每个属性添加get和set。发布您的java代码。好的,我正在发布代码。好的,我将尝试并回复。
@ViewScoped
public class A {}
@RequestScoped
public class B {
@ManagedProperty(value = "#{a}")
private A a;
}
<p:commandButton icon="ui-icon-search" title="View"
process="@this" oncomplete="receiptViewWidget.show()"
action="#{receiptRepoMB.forReceiptDialog}"
update=":receiptViewForm">
<f:setPropertyActionListener target="#{receiptRepoMB.receiptDetObj}"
value="#{rd}" />
</p:commandButton>