【问题标题】:Display a formatted text / message on p:confirmDialog在 p:confirmDialog 上显示格式化的文本/消息
【发布时间】:2013-11-09 21:08:46
【问题描述】:

<p:dataTable> 中的一行被右键单击时,<p:contextMenu> 会出现一个删除选项。单击此选项时,<p:confirmDialog> 将出现两个按钮 YesNo - 关于删除当前行的配置警告如下。

<p:contextMenu for="dataTable">
    <p:menuitem oncomplete="confirmDelete.show()"
                value="Delete"
                update="confirmDialog"
                process="@this dataTable"
                actionListener="#{testManagedBean.deleteActionListener}"
                icon="ui-icon-close" ajax="true"/>
</p:contextMenu>

<p:confirmDialog id="confirmDialog"
                 widgetVar="confirmDelete"

                 message="#{testManagedBean.message}"

                 header="Message"
                 severity="alert"
                 closeOnEscape="true"
                 showEffect="slide"
                 hideEffect="fold"
                 appendTo="@(body)"
                 closable="true">

    <p:commandButton id="btnYes"
                     value="Yes"
                     process="@this"
                     oncomplete="confirmDelete.hide()"
                     actionListener="#{testManagedBean.deleteActionListener}" 
                     update="dataTable"/>

    <p:commandButton id="btnNo"
                     value="No"
                     onclick="confirmDelete.hide()"
                     type="button" />
</p:confirmDialog>

有没有办法在此对话框上设置带有格式化消息的message 属性。

例如,其托管 bean 中的属性 testManagedBean.message 设置为类似字符串

You are about to delete &lt;font color='#ff0000'&gt;2&lt;/font&gt; rows. &lt;br/&gt;This action will never be undone. &lt;br/&gt;Are you sure?

确认对话框将这个字符串显示为一个整体。此字符串中的 HTML 应被解释为 HTML。我在&lt;p:confirmDialog&gt; 中没有看到像escape 这样的属性。

有没有办法将此字符串显示为格式化消息。

【问题讨论】:

    标签: jsf primefaces jsf-2.2


    【解决方案1】:

    我在&lt;p:confirmDialog&gt; 中发现了&lt;f:facet name="message"&gt; 嵌套的ugly 解决方案。

    <p:confirmDialog id="confirmDialog"
                     widgetVar="confirmDelete"
    
                     header="Message"
                     severity="alert"
                     closeOnEscape="true"
                     showEffect="slide"
                     hideEffect="fold"
                     appendTo="@(body)"
                     closable="true">
    
        <p:commandButton id="btnYes"
                         value="Yes"
                         process="@this"
                         oncomplete="confirmDelete.hide()"
                         actionListener="#{testManagedBean.deleteActionListener}"
                         update="dataTable"/>
    
        <p:commandButton id="btnNo"
                         value="No"
                         onclick="confirmDelete.hide()"
                         type="button" />
    
        <f:facet name="message">
            <h:outputFormat value="#{testManagedBean.message}" escape="false"/>
        </f:facet>
    </p:confirmDialog>
    

    &lt;p:comfirmDialog&gt; 中删除message 属性并将&lt;f:facet name="message"&gt; 嵌套在其中。

    注意:&lt;h:outputFormat&gt; 仅在需要通过嵌套的&lt;f:param&gt; 传递一个或多个参数以替换消息文本中的相应占位符({0})时才需要。如果不需要传递此类参数,请继续使用&lt;h:outputText escape="false"&gt;

    【讨论】:

    • 为什么这个解决方案“丑陋”?
    • &lt;f:facet name="message"&gt; 不能保证适用于每个 JSF 版本,除非它是一个不错的 JSF 版本。
    猜你喜欢
    • 1970-01-01
    • 2014-12-26
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多