gpt4 book ai didi

html - 如何将 HTML 代码添加到 JSF FacesMessage

转载 作者:技术小花猫 更新时间:2023-10-29 12:18:00 24 4
gpt4 key购买 nike

默认情况下,每个 JSF FacesMessage显示在一行中。我想添加一个 HTML 换行符 <br />消息本身,以便消息整齐地显示。我试过如下

message = new FacesMessage("test<br/>test");

但是,它被 JSF 转义并显示为文字文本。如何将 HTML 代码添加到 FacesMessage没有逃脱?

最佳答案

理论上,您需要一个 escape h:messages 的属性类似 h:outputText 的组件有。您不是唯一想要这个的人,以前经常有人要求这样做,但根据 JSF 人员的说法,这是一个 WONTFIX。

您有多种选择:

  1. 使用 \n而不是 <br>并相应地应用 CSS(最简单)。

    #messages td { white-space: pre; }
  2. 创建 custom renderer延伸MessageRenderer (有点难,但如果你想覆盖更多的 HTML 而不仅仅是换行符,那很好)。

  3. 自己在一些 List 中收集消息在 bean 中并使用 <t:dataList> 显示它们,或者当您已经在使用 Facelets 而不是 JSP 时,使用 <ui:repeat> .这样你就可以使用 <h:outputText escape="false">显示各个消息。

  4. 或者,当您已经在使用 JSF 2.0 时,只需迭代 FacesContext#getMessageList() 你自己。每个项目都会给你一个 FacesMessage 后面又提供了几个 setter/getter 。然后您可以在 <h:outputText escape"false" /> 中显示摘要.

    <ul>
    <ui:repeat value="#{facesContext.messageList}" var="facesMessage">
    <li>
    <h:outputText value="#{facesMessage.summary}" escape="false" />
    </li>
    </ui:repeat>
    </ul>
  5. 或者,当您使用 JSF 实用程序库时 OmniFaces , 使用其 <o:messages> component相反,它支持 escape属性。

    <o:messages escape="false" />

关于html - 如何将 HTML 代码添加到 JSF FacesMessage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3195348/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com