eclipse - EL 标签未渲染

标签 eclipse maven jsf-2 el tomcat7

我的问题是,当我运行一个非常简单的 JSF 应用程序时,EL 标签不会被渲染。

例如,这段代码:

<html lang="en" xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html">
<h:head>
    <title>Facelets Hello World</title>
</h:head>
<h:body> #{hello.world} </h:body>
</html>

在浏览器中显示为#{hello.word},而不是“Hello World!”我的托管 bean 应该返回:

@ManagedBean(name = "hello")
public class Hello {
    public String getWorld() {
        return "Hello World!";
    }
}

我看过这个问题JSF 2.0 EL tags don't render in browser已经,但这对我没有帮助。而且,根据我所读到的内容,Tomcat 7 声称提供 API 和 EL 2.2 标准的实现。

我正在使用以下软件/版本:

  • Eclipse Indigo 3.7.2 Java EE 版本
  • Eclipse 插件:m2e 1.0.2
  • Eclipse 插件:m2e-wtp 0.15.2
  • Maven 2
  • Tomcat 7(已尝试过以下版本)
    • Tomcat 7.0.10
    • Tomcat 7.0.26
    • Tomcat 7.0.27
  • MyFaces 2.1.6
  • Oracle JDK 1.7.0

如果需要更多信息,我很乐意提供。

[编辑1]

我什至不确定这是否必要/正确,但将以下内容添加到 web.xml 并没有解决问题:

<context-param>
    <param-name>org.apache.myfaces.EXPRESSION_FACTORY</param-name>
    <param-value>org.apache.el.ExpressionFactoryImpl</param-value>
</context-param>

[编辑2]

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">
    <display-name>jsf-facelets</display-name>
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>
    <context-param>
        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
        <param-value>.xhtml</param-value>
    </context-param>
    <context-param>
        <param-name>org.apache.myfaces.EXPRESSION_FACTORY</param-name>
        <param-value>org.apache.el.ExpressionFactoryImpl</param-value>
    </context-param>
    <context-param>
        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
        <param-value>client</param-value>
    </context-param>
    <context-param>
        <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
        <param-value>true</param-value>
    </context-param>
    <context-param>
        <param-name>org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION</param-name>
        <param-value>20</param-value>
    </context-param>
    <context-param>
        <param-name>org.apache.myfaces.SERIALIZE_STATE_IN_SESSION</param-name>
        <param-value>true</param-value>
    </context-param>
    <context-param>
        <param-name>org.apache.myfaces.COMPRESS_STATE_IN_SESSION</param-name>
        <param-value>true</param-value>
    </context-param>
    <context-param>
        <param-name>org.apache.myfaces.COMPRESS_STATE_IN_CLIENT</param-name>
        <param-value>true</param-value>
    </context-param>
    <context-param>
        <param-name>org.apache.myfaces.ALLOW_JAVASCRIPT</param-name>
        <param-value>true</param-value>
    </context-param>
    <context-param>
        <param-name>org.apache.myfaces.PRETTY_HTML</param-name>
        <param-value>true</param-value>
    </context-param>
    <context-param>
        <param-name>org.apache.myfaces.DETECT_JAVASCRIPT</param-name>
        <param-value>false</param-value>
    </context-param>
    <context-param>
        <param-name>org.apache.myfaces.AUTO_SCROLL</param-name>
        <param-value>true</param-value>
    </context-param>
    <context-param>
        <param-name>org.apache.myfaces.SECRET</param-name>
        <param-value>NzY1NDMyMTA=</param-value>
    </context-param>
    <listener>
        <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
    </listener>
    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>
</web-app>

最佳答案

您应该使用 .html 扩展名访问您的页面,如下所示:myPage.html

您的 servlet 映射的原因

<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.html</url-pattern>
</servlet-mapping>

关于eclipse - EL 标签未渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10358827/

相关文章:

android - 将 HoloEverywhere 作为库导入现有项目

java - 如何使用 Maven 运行 Selenium 测试?

java - Linux 版本的 Eclipse 在尝试打开二进制文件(扩展名为 .bin)时卡住

jsf - Omnifaces CombinedResourceHandler——有没有办法抑制某些资源?

android - 找不到与给定名称匹配的资源(在 'title' 处,值为 '@string/action_settings' )

java - 使用 swagger codegen 插件通过多个 yaml 文件生成代码

maven - 代理存储库被阻止

jsf-2 - 数据表更新后,Primefaces 数据表在过滤器字段中丢失文本

java - JSF outputstylesheet 在 firefox 中不起作用?

Maven 错误 : InvocationTargetException: Tomcat connector in failed state fiware-cepheus