【问题标题】:JSF2 EL html outputJSF2 EL html 输出
【发布时间】:2014-10-07 12:43:27
【问题描述】:

背景

我有一个依赖 JSF2 的现有 Web 应用程序。在大多数页面中,都有从各种属性文件输出文本的表达式。某些属性可能包含 html。但是,JSF 表达式将 html 转义为纯文本。我找到的解决方案是使用 并将转义设置为 false。由于需要包装的表达式数量,使用它会很麻烦。

问题

我的问题是,有没有办法将所有表达式配置为不转义 html?

【问题讨论】:

  • 是的,我意识到了这一点。但是,html 不会由用户设置,而是由有权访问属性文件的第三方设置。

标签: jsf


【解决方案1】:

如果我是你,我会创建自己的复合组件,它可以在 xhtml 中调用

<myComponents:outputText value="<STRONG>the html taged value</STRONG>">

只需将此自定义组件添加到默认 jsf 文件夹 src/webapp/components 中的新 xhtml 文件中。

喜欢:

src/webapp/components/myComponents/outputText.xhtml

<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:c="http://java.sun.com/jsp/jstl/core"
    xmlns:cc="http://java.sun.com/jsf/composite">

    <cc:interface>
        <cc:attribute name="value" required="true"/>
    </cc:interface>

    <cc:implementation>
            <h:outputText value="#{cc.attrs.value}" escape="false"/>
    </cc:implementation>

</ui:composition>

不要忘记在使用组件的 xhtml 页面中添加以下命名空间 xmlns:field="http://java.sun.com/jsf/composite/components/myComponentsui:composition 标记中

希望这会有所帮助...

【讨论】:

  • 我明白了。但是,这对我不起作用,因为我无法浏览每一页并将#{expression} 替换为。如果是这种情况,那么我将只使用 。不过谢谢。
猜你喜欢
  • 2013-03-24
  • 1970-01-01
  • 2011-05-03
  • 1970-01-01
  • 2015-02-14
  • 2012-10-26
  • 2011-11-19
  • 1970-01-01
  • 2011-02-19
相关资源
最近更新 更多