Jsf 从另一个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

我有一个由托管bean支持的对话框
@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>