Jsf 一<;p:dialog>;对于多个bean

Jsf 一<;p:dialog>;对于多个bean,jsf,primefaces,Jsf,Primefaces,我的总体布局中有一个。目前,我对其标题属性进行了硬编码 我想要的是从不同的bean访问它,并根据我的选择在运行时更改它的头 我正在使用它向用户显示加载消息,并希望根据当前后端处理更新加载文本,例如“等待服务器响应”等 现在我在按钮点击的不同JSF页面上调用它,例如 它工作正常,但总是显示“加载…”,因为我有一个硬涂层属性。那么我怎样才能使它充满活力呢?请注意,我不想只对一个页面或bean执行此操作,但从它访问的任何页面,我都可以相应地更改ist标题。 谢谢 您可以将托管属性与一个托管bean

我的总体布局中有一个
。目前,我对其
标题
属性进行了硬编码

我想要的是从不同的bean访问它,并根据我的选择在运行时更改它的

我正在使用它向用户显示加载消息,并希望根据当前后端处理更新加载文本,例如“等待服务器响应”等


现在我在按钮点击的不同JSF页面上调用它,例如
它工作正常,但总是显示“加载…”,因为我有一个硬涂层属性。那么我怎样才能使它充满活力呢?请注意,我不想只对一个页面或bean执行此操作,但从它访问的任何页面,我都可以相应地更改ist标题。
谢谢

您可以将托管属性与一个托管bean(例如
HeaderBean
)的一起使用,并每次相应地更改该属性,并将头值设置为该值,它看起来会动态更新

@ManagedProperty("#{headerBean}")
private HeaderBean headerBean;
在头管理bean中,创建一个
字符串
属性
存储头的值:

@ManagedBean(name = "headerBean")
@RequestScoped
public class HeaderBean implements Serializable
{
    private String value = null;

    // getter and setter methods
在您的
p:对话框中

<p:dialog id="main-status-dialog"
      widgetVar="mainStatusDialog"
      modal="true"
      header="#{headerBean.value}"
      draggable="false"
      closable="false"
      resizable="false"
      appendToBody="true">
您还可以在commandLink中使用更新属性,如下所示:

<h:link outcome="/generalInformation" value="General Information" oncomplete="mainStatusDialog.show()" update=":main-status-dialog"/>


一些代码会有帮助。嗨,谢谢你的回答。我试过了,但没有更新标题。可能我必须在更改消息后更新对话框?当然,您必须更新对话框以便更改标题。为此,我必须从bean中执行一些操作。你能告诉我如何在bean中访问对话框并更新它吗?它与RequestContext.getCurrentInstance().update(“主状态对话框”)一起工作;但问题是,当我更改它时,该值将永久更改。此外,当上一个对话框已经显示时,它不会更改live的值。我已经用@RequestScope、view和session尝试过了,但结果是一样的。据我所知,你不能永久地使用它,你可以将更新属性与另一个组件(如链接)一起使用,也可以查看一下,或者像我在RequestContext中提到的那样。
RequestContext.getCurrentInstance().
          addPartialUpdateTarget("header_id");
<h:link outcome="/generalInformation" value="General Information" oncomplete="mainStatusDialog.show()" update=":main-status-dialog"/>