如何使用jsp配置jsf

时间:2011-07-09 14:09:22

标签: jsp jsf maven

我想在jsp中使用jsf标签。这该怎么做?我使用jsf依赖配置了pom文件,如下所示

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

并在web.xml中添加以下内容

<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>*.jsp</url-pattern>
</servlet-mapping>

<context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
</context-param>

部署war文件后,我得到 java.lang.NullPointerException

3 个答案:

答案 0 :(得分:4)

您的FacesServlet网址格式错误。它不应该覆盖JspServlet之一。这样JSP就永远不会运行(因此JSF永远不会使用它们)。

FacesServlet网址格式应该是不同且唯一的。例如,使用*.jsf

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

说,如果更喜欢遗留JSP而不是其后继Facelets,那么你将会错过Facelets提供的强大的templatingcompositing功能很多。我强烈建议您重新考虑您对JSF 2.0视图技术的奇怪选择。

答案 1 :(得分:2)

我想你想做错事。 JSF是一个与JSP不同的哲学框架。

您可以将JSF和JSP协同工作,但另一种方法是 - 您将JSF配置为使用JSP作为其视图技术。但除非你非常清楚为什么需要它,否则你不应该这样做。默认的视图技术是Facelets,它更适合JSF。

答案 2 :(得分:1)

JSF是一个框架,jsp只是一个文件。是的,您可以在JSF框架中使用jsp文件,而无需使用最好的工具Facelets。在JSF中使用Facelets,您只能使用xhtml文件。

如果您仍想使用jsp文件,则必须使用核心servlet或使用不带facelets的JSF。