3

行を<p:dataTable>右クリック<p:contextMenu>すると、削除オプションが表示されます。このオプションをクリックすると、<p:confirmDialog>が 2 つのボタンとともに表示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このダイアログで書式設定されたメッセージで属性を設定する方法はありますか?

たとえば、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>

この文字列をフォーマットされたメッセージとして表示する方法はありますか?

4

1 に答える 1

12

withinの入れ子になっている醜い解決策を見つけました。<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>ために、1 つ以上のパラメーターをネストされた方法で渡す必要がある場合にのみ必要です。そのようなパラメータを渡す必要がない場合は、そのまま使用してください。<f:param>{0}<h:outputText escape="false">

于 2013-11-10T01:26:06.370 に答える