【问题标题】:How to configure jsf with jsp如何用jsp配置jsf
【发布时间】:2011-07-09 14:09:21
【问题描述】:

我想在 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>

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

【问题讨论】:

  • 您要在哪个容器/版本(例如 Tomcat 6)上运行它?

标签: jsp jsf maven


【解决方案1】:

您的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 提供的出色的templating 和compositing 功能。我强烈建议您重新考虑您对 JSF 2.0 视图技术的奇怪选择。

【讨论】:

    【解决方案2】:

    我认为你想做错事。 JSF 是一个与 JSP 具有不同理念的框架。

    您可以让 JSF 和 JSP 一起工作,但反过来 - 您将 JSF 配置为使用 JSP 作为其视图技术。但是你不应该这样做,除非你非常清楚你为什么需要它。默认的视图技术是 Facelets,它更适合 JSF。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-17
        • 2013-09-06
        • 2012-05-02
        • 1970-01-01
        • 2023-03-23
        • 1970-01-01
        相关资源
        最近更新 更多