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"/>