我想在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
您的FacesServlet
URL模式错误。它不应该覆盖JspServlet
中的一个。这样jsp就永远不能运行(因此JSF也永远不能使用它们)。
FacesServlet
URL模式应该是不同且唯一的。以*.jsf
为例。
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
说,如果您更喜欢遗留的JSP而不是它的后继Facelets,那么您将会错过许多由Facelets提供的出色的模板和合成特性。我强烈建议您重新考虑对JSF 2.0视图技术的奇怪选择。
我想你做错了。JSF是一个框架,其原理与JSP不同。
您可以让JSF和JSP一起工作,但这是另一种方式——您配置JSF使用JSP作为其视图技术。但你不应该这样做,除非你非常清楚你为什么需要它。默认视图技术是Facelets,它更适合JSF。
JSF是一个框架,而jsp只是一个文件。是的,您也可以在JSF框架中使用jsp文件,而无需使用最强大的工具Facelets。在JSF中使用Facelets只能使用xhtml文件。
如果您仍然想使用jsp文件,那么您必须使用核心servlet或使用不带facelets的JSF。