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

Tin*_*iny 3 jsf primefaces jsf-2.2

<p:dataTable>右键单击行时,将<p:contextMenu>显示删除选项.单击此选项时,将<p:confirmDialog>显示两个按钮,Yes并显示No有关删除当前行的确认警告,如下所示.

<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>
Run Code Online (Sandbox Code Playgroud)

有没有办法message在此对话框中使用格式化消息设置属性.

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

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

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

Tin*_*iny 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>
Run Code Online (Sandbox Code Playgroud)

message从中删除属性<p:comfirmDialog><f:facet name="message">在其中嵌套.

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