我想在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
答案 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提供的强大的templating和compositing功能很多。我强烈建议您重新考虑您对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。