动态设置 <p:dialog> 的标题



我必须设置head为在JSF中。我已经写了setHeaderName()为名称getter和setter。但是我看不到<对话>如何在PrimeFaces.

中动态更改p:对话框的头部

正如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&apos;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" .../>

用于整个对话框,而不仅仅是其中的窗体。

相关内容

  • 没有找到相关文章

最新更新