Jsf 设置<;p:dialog>;动态地
我必须在JSF中为Jsf 设置<;p:dialog>;动态地,jsf,primefaces,Jsf,Primefaces,我必须在JSF中为设置头。我已经为name getter和setter写入了setHeaderName()。但是我看不到的头的名称 如何在PrimeFaces中动态更改p:dialog的头部。这在很大程度上取决于实现,但通常您可以这样做: <p:dialog id="someDialog" header="#{backingBean.dialogHeader}"> (...) </p:dialog> <p:commandButton value="Chang
如何在PrimeFaces中动态更改p:dialog的头部。这在很大程度上取决于实现,但通常您可以这样做:
<p:dialog id="someDialog" header="#{backingBean.dialogHeader}">
(...)
</p:dialog>
<p:commandButton value="Change dialog header"
actionListener="#{someBackingBean.changeHeader}"
update="someDialog"/>
调用changeHeader方法并重新命名对话框将更改标头。例如,可以这样称呼它:
<p:dialog id="someDialog" header="#{backingBean.dialogHeader}">
(...)
</p:dialog>
<p:commandButton value="Change dialog header"
actionListener="#{someBackingBean.changeHeader}"
update="someDialog"/>
您还可以选择在客户端运行javascript解决方案:
if (someCondition)
dlgTitle = 'Title A';
else
dlgTitle = 'Title B';
PF('dlgWidgetVarName').show();
$('#yourFormId\\:yourDialogId_title').text(dlgTitle);
在我的例子中,我之所以选择这种方法,是因为我的
在ajax调用后不会更新,只有它内部的
(有条件地呈现):
问题是,对话与评论;阿菲什·帕斯。。。
此外,如果您需要对标题进行本地化,您可以按照此操作创建javascript变量,并使用服务器的资源包文件的内容进行初始化。正如mareckmareck之前提到的,您可以通过对组件进行简单的ajax更新来实现这一点 此外,我建议使用header事实,而不是header属性,如:
<p:dialog id="someDialog" widgetVar="someDialog_var">
<f:facet name="header">
<h:outputText id="someDialogHeader" value="#{backingBean.dialogHeader}"/>
</f:facet>
...
</p:dialog>
...
和匹配
<p:commandButton value="Change dialog header"
actionListener="#{someBackingBean.changeHeader}"
update="someDialogHeader"/>
(顺便说一下,我复制并扩展了mareckmareck提供的示例…)
这是一个更好的解决方案,因为现在您可以只更新标题文本,而不是整个对话框。
(当然,更新整个对话框也可以使用这种方法。)
此外,您可能已经注意到,更新整个对话框后,对话框将关闭。这种方法也解决了这个问题
致以最良好的祝愿
J.Adam过了很长时间,但是如果您想通过JS更改标题,您可以这样做
PF('widgetVarname').getJQ().find(“.ui对话框标题”).text(“您想要的新标题”)
希望这有帮助我的问题略有不同。我在一个表中选择了一个元素,当我点击一个按钮时,它会在对话框中提供额外的细节。如果我切换所选元素,
的头仍然是旧头。我发现:
<p:commandButton ... update=":ViewForm" .../>
应该是:
<p:commandButton ... update=":ViewDlg" .../>
用于整个对话框,而不仅仅是其中的窗体。希望这对别人有帮助