在p:confirmDialog上显示格式化的文本/消息

时间:2013-11-09 21:08:47

标签: jsf primefaces jsf-2.2

如果右键单击<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 <font color='#ff0000'>2</font> rows. <br/>This action will never be undone. <br/>Are you sure?

确认对话框显示整个字符串。此字符串中的HTML应解释为HTML。我在escape中没有看到<p:confirmDialog>之类的任何属性。

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

1 个答案:

答案 0 :(得分:12)

我在<f:facet name="message">内找到<p:confirmDialog>丑陋解决方案嵌套。

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

message移除<p:comfirmDialog>属性并在其中嵌套<f:facet name="message">

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