h:outputText不会转义HTML实体

时间:2013-11-19 00:44:33

标签: jsf jsf-2 html-escape

我遇到的问题是'<'不会被JSF中的outputText转义。

我正在使用JSF 2.0运行Tomcat 7.0.40,并具有以下声明:

<?xml version="1.0" encoding="UTF-8"?>
<f:view contentType="text/html" encoding="UTF-8">

这一行打破了HTML,因为'&lt;'没有被转义:

<h:outputText value="Some < text from the database"/>

输出显示“Some”,然后由于未转义的'&lt;'

而HTML被破坏

'&lt;'在数据库中是正确的,它也在表单文本框中正确呈现:

 <p:inputText value="#{db_data}" ... />

我的web.xml文件包含:

<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

我的POM ......

 <!-- JSF -->
    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-api</artifactId>
        <version>2.1.12</version>
        <exclusions>
            <exclusion>
                <groupId>javax.servlet.jsp</groupId>
                <artifactId>javax.servlet.jsp-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-impl</artifactId>
        <version>2.1.12</version>
    </dependency>

    <dependency>
        <groupId>org.primefaces</groupId>
        <artifactId>primefaces</artifactId>
        <version>3.4.1</version>
    </dependency>

    <dependency>
        <groupId>org.omnifaces</groupId>
        <artifactId>omnifaces</artifactId>
        <version>1.4.1</version>
        <!-- Or 1.5-SNAPSHOT -->
    </dependency>

当然,其他HTML实体也没有被转义:&amp;,&gt;等等。

无论我使用#{output}<h:outputText value="#{output}"/>还是<h:outputText value="#{output}" escape="true"/>,输出都不会转义......

2 个答案:

答案 0 :(得分:1)

此问题已通过升级到jsf-impl 2.1.26解决。

答案 1 :(得分:1)

这是由Mojarra 2.1.12中的一个错误引起的,该错误报告为issue 2503并在2.1.13中修复。

所以,如果你升级到至少Mojarra 2.1.13,那么这个奇怪的问题应该会消失。