<p:confirm message>中的换行符问题

9
有没有一种方法可以在<p:confirm>组件的消息中加入换行符?
<p:confirm header="Confirmation"  
    message="Are you sure you want to continue? Bla bla bla" 
    icon="ui-icon-alert"  />

我希望你能在新的一行中显示"Bla bla bla"。
6个回答

5

消息是HTML部分,因此您需要添加<br>。要么从bean中获取消息(以防止xml标记转义),要么使用facet:

<p:confirmDialog header="Confirmation">
    <f:facet name="message">
        Are you sure you want to continue?<br/>Yes or no?
    </f:facet>
</p:confirmDialog>  

2
谢谢您的回答。我正在使用全局confirmDialog,有没有办法在p:confirm组件内进行换行?谢谢。 - qxlab
你试过了吗?这段代码会抛出FaceletException异常,因为它是无效的XML。 - BalusC
1
谢谢@BalusC,我一直在使用<br/>,但我想在这里使用有效的HTML。有趣的是,最正确的语法却不被接受 :( - Web Devie
嗯,HTML4确实不是有效的XML,这也正是XHTML和HTML5存在的原因。作为“Web开发者”和特别是JSF开发者,你怎么会忽略这个事实呢?另请参见https://dev59.com/jnA85IYBdhLWcg3wHvs0#3869174和http://stackoverflow.com/tags/xhtml/info等网站。 - BalusC
如果我们需要在同一页上使用多个确认框,该怎么办? - Ramesh Rajendran

3
在我提问的那个时候,confirm组件中还没有"escape option"(逃跑选项),但是在PrimeFaces 6.2中,它已经被实现了,这是在该功能请求之后完成的。
因此,现在我们可以采用以下方式:
<p:confirm header="Confirmation"  
    escape="false"
    message="Are you sure you want to continue? &lt;br/&gt; Bla bla bla" 
    icon="ui-icon-alert"  />

另外,可以像其他答案中已建议的那样,使用confirmDialog组件。


2
这对我来说可行:
<p:confirm header="Confirm title" icon="ui-icon-help" message="This Line\n Next Line" />

并且样式:

<p:confirmDialog global="true" style="white-space: pre;">
...
</p:confirmDialog>

2

p:confirm中没有“escape”属性,所以您可以尝试以下方法。(我试过这个方法是有效的。)

页面:

<p:commandButton value="Show the Dialog" 
                 onclick="#{MyBean.setMsg('Are you sure you want to continue? &lt;br/&gt; Bla bla bla')}" 
                 oncomplete="conf.show()" update="confDlg">
</p:commandButton>
<p:confirmDialog id="confDlg" severity="alert" header="Confirmation" widgetVar="conf" global="true">   
    <f:facet name="message">
       <h:outputText value="#{MyBean.msg}" escape="false"/>
    </f:facet>
</p:confirmDialog> 

Backing Bean(简单的getter和setter):

   private String msg;

public void setMsg(String msg) {
    this.msg = msg;
}

public String getMsg() {       
    return msg;
}

这样,您也可以利用全局的confirmDialog

但是,您可能需要编辑其他显示confirmDialogcommandButton


2
非常简单,您可以使用Facet。
<p:confirmDialog widgetVar="cd" header="Confirm">
     <f:facet name="message">
        <h:outputText value="Are you sure?" />
        <br />
        <h:outputText value="After line break" />
     </f:facet>
    ...
 </p:confirmDialog>

3
你为什么重复已经给出的答案?这是一个问答网站,而不是一个老式的讨论论坛。 - BalusC

0
我有许多不同的消息要显示,然后我将它们放入列表中,在页面中执行类似的操作:
<p:confirmDialog>
  <f:facet name="message">
    <ui:repeat value="#{bean.list}" var="item">
      <p:panel>
        <h:outputText value="#{item}"/>
      </p:panel>
    </ui:repeat>
  </f:facet>
</p:confirmDialog>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接