JSF WebApp 与 Tomcat(哪个版本?)

aft*_*bit 0 jsf tomcat version

我想开发一个 JSF 2 Web 应用程序,但我对设置环境文件(即 web.xml 和 faces-config.xml)感到困惑

我想使用 JSF 2 (.xhtml)、Tomcat 9.0 和 Open JDK 11.0.2

我看过这个页面:http://tomcat.apache.org/whichversion.html但我不清楚这些列的确切含义,特别是(对于 Tomcat 9.0.31 行)

Servlet Spec 4.0:这是否意味着我必须在 web.xml 文件中设置 web-app version =“4.0”?JSP Spec 2.3:我应该设置什么?EL 3.0 规范:这是否意味着我必须在 faces-config.xml 文件中设置 faces-config version = "3.0" ?

谢谢你!

Bal*_*usC 5

Servlet Spec 4.0:这是否意味着我必须在 web.xml 文件中设置 web-app version =“4.0”?

是的。

JSP Spec 2.3:我应该设置什么?

没有什么。JSP 版本与Servlet 版本齐头并进。所以激活JSP 2.3就可以了web.xml4.0

<?xml version="1.0" encoding="UTF-8"?>
<web-app 
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    version="4.0"
>
    <!-- Config here. -->
</web-app>
Run Code Online (Sandbox Code Playgroud)

EL 3.0 规范:这是否意味着我必须在 faces-config.xml 文件中设置 faces-config version = "3.0" ?

绝对不。EL 不是 JSF。EL 版本也与 Servlet 版本齐头并进。所以激活EL 3.0就可以了web.xml4.0

版本faces-config.xml表示JSF版本。但 Tomcat 根本不随 JSF 一起提供。您必须手动安装它。目前可用的最新 JSF 版本是 2.3,因此您必须设置faces-config.xml2.3.

<?xml version="1.0" encoding="UTF-8"?>
<faces-config
    xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_3.xsd"
    version="2.3"
>
    <!-- Config here. -->
</faces-config>
Run Code Online (Sandbox Code Playgroud)

请注意,Tomcat 也未附带 JSTL 和 CDI,但 JSF 也需要它们。所以你还必须手动安装它们。或者,更好的方法是选择一个普通的 JEE 服务器而不是准系统 servlet 容器。然后,您无需手动安装目标 servlet 容器不支持的各个 JEE 工件。

也可以看看: