我有一个由托管bean @RequestScoped
'A'
支持的对话框。我正在从另一个bean 'B'
调用对话框@RequestScoped
。所以我使用@ManagedProperty
来'A'
来调用'B'
。我已经设置了来自'A'
的{{1}}的值(对象,变量等等)来显示,这取决于'B'
的对象。所有值都已正确设置,但是当对话框打开时,不会显示我为'B'
设置的值。
如何实现这一目标?
我的意思是调用一个bean支持的对话框,并从另一个bean设置支持bean的值??
我使用了'A'
行上的按钮:
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>
的代码段:
'B'
答案 0 :(得分:0)
这里的问题是,当您尝试访问时,B中使用的A值将丢失。
我建议你定义一个具有更长范围的A,以便在被B调用时保持其值。(类似于@ViewScoped应该可以工作)。
@ViewScoped
public class A {}
@RequestScoped
public class B {
@ManagedProperty(value = "#{a}")
private A a;
}
答案 1 :(得分:0)
我刚刚在update=":receiptViewForm"
中添加了p:commandButton
,这是对话框的表单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>
它刚刚起作用。