如果右键单击<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>
有没有办法在此对话框中使用格式化消息设置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>
之类的任何属性。
有没有办法将此字符串显示为格式化消息。
答案 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">
。