【问题标题】:Newline in <p:confirm message><p:confirm message> 中的换行符
【发布时间】:2013-12-20 08:49:05
【问题描述】:

有没有办法在&lt;p:confirm&gt;组件的消息中换行?

<p:confirm header="Confirmation"  
    message="Are you sure you want to continue? Bla bla bla" 
    icon="ui-icon-alert"  />

我想在新行中添加“Bla bla bla”。

【问题讨论】:

    标签: jsf jsf-2 primefaces newline confirm


    【解决方案1】:

    我有许多不同的消息要显示,然后我将其放入 List 并在页面中执行类似的操作:

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

    【讨论】:

      【解决方案2】:

      当时我问这个问题时,confirm 组件中没有转义选项,但在 feature request 之后,它已在 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 组件。

      【讨论】:

        【解决方案3】:

        这对我有用:

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

        【讨论】:

          【解决方案4】:

          很容易你可以使用 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>
          

          【讨论】:

          • 你为什么要重复一个已经给出的答案?这是一个问答网站,而不是老式的论坛。
          【解决方案5】:

          消息是 HTML 部分,所以你需要添加&lt;br&gt;。从 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>  
          

          【讨论】:

          • 感谢您的回答。我正在使用全局confirmDialog,有什么办法可以在p:confirm 组件内进行此换行吗?谢谢
          • 你试过了吗?这个 sn-p 抛出 FaceletException 因为它是无效的 XML。
          • 感谢@BalusC,我使用的是
            但我想在这里使用有效的 HTML。有趣的是,不接受最正确的语法:(
          • 呃,HTML4 确实不是有效的 XML,不,这也是 XHTML 和 HTML5 存在的原因。作为“网络设备”,尤其是 JSF 开发人员,您怎么能错过这个事实呢?另请参阅 stackoverflow.com/questions/2935759/…stackoverflow.com/tags/xhtml/info
          • 同一页面需要多个确认框怎么办?
          【解决方案6】:

          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

          但是,您可能需要编辑显示 confirmDialog 的其他命令按钮。

          【讨论】:

            猜你喜欢
            • 2021-10-24
            • 1970-01-01
            • 2015-01-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多