我必须设置head为
正如marecmareck之前提到的,可以通过对组件进行简单的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"/>
(顺便说一下,我复制并扩展了这里提供的示例marecmareck…)
这是一个更好的解决方案,因为现在您可以只更新标题文本,而不是整个对话框。(当然,更新整个对话框也可以使用这种方法。)
另外,您可能已经注意到,一旦您更新了整个对话框,您的对话框将关闭。这个方法也解决了这个问题。
最诚挚的问候,
J。亚当
这很大程度上取决于实现,但通常您可以这样做:
<p:dialog id="someDialog" header="#{backingBean.dialogHeader}">
(...)
</p:dialog>
,然后在后台bean中更改字段dialogHeader的值(通过ajax或任何其他方式)。记住,你需要一个setter和getter来让它工作。
@ViewScoped
@ManagedBean
public class SomeBackingBean {
private String dialogHeader;
public void setDialogHeader(final String dialogHeader) {
this.dialogHeader = dialogHeader;
}
public String getDialogHeader() {
return dialogHeader;
}
public void changeHeader() {
setDialogHeader("SomeHeader");
}
}
调用changeHeader方法和重新呈现对话框将改变标题。例如,可以这样调用它:
<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);
在我的例子中,我选择了这种方法,因为我的<p:dialog>
在ajax调用后没有更新,只有其中的<p:fragment>
(有条件地呈现):
<h:form id="locations_editer_creer">
<p:dialog id="location_dlg" widgetVar="locationDlg" header="Location" width="610" closeOnEscape="true"
minimizable="true" maximizable="true" fitViewport="true" onShow="preparerCreerAjaxRetour()" >
<p:fragment id="dlgFrag" rendered="#{locationsControleur.action == 'preparer'}" >
<ui:include src="/pages/locations/LocEditerCreerDlg.xhtml">Problème, le dialogue de création / édition ne s'affiche pas...</ui:include>
</p:fragment>
</p:dialog>
</h:form>
此外,如果你需要本地化你的标题,你可以按照这个链接创建javascript变量,初始化你的服务器的资源包文件的内容。
这么长时间后,但如果你想通过JS改变头你可以这样做
PF('widgetVarname').getJQ().find(".ui-dialog-title").text("new title you want")
希望能有所帮助
我的问题略有不同。我在一个表中有一个选定的元素,当我单击一个按钮时,它会在一个对话框中提供额外的细节。如果我切换所选元素,<p:dialog>
的头仍然是旧的头。我发现的是:
<p:commandButton ... update=":ViewForm" .../>
应该是:
<p:commandButton ... update=":ViewDlg" .../>
用于整个对话框,而不仅仅是其中的窗体。