【问题标题】:Problems with JSF Using GlassFishJSF 使用 GlassFish 的问题
【发布时间】:2013-05-28 13:56:59
【问题描述】:

[如果有帮助,我正在阅读 Core JavaServer Faces (3rd edition) 一书,现在在第 12 页左右。]

我正在尝试使用 GlassFish 启动 JSF 应用程序,但遇到了我无法识别的问题。我可以正确启动 GlassFish 并看到书中描述的屏幕,所以看起来没问题。然后,我将创建并放置在包含此项目的 src 和 web 目录的目录中的文件 login.war 复制到 GlassFish 的 domain/domain1/autodeploy 目录中。

在 Chrome 中转到 http://localhost:8080 会显示正确的屏幕;但是http://localhost:8080/login,如书中所述并对应于我创建的 login.xhtml 页面,只是返回一个 HTTP 404 错误,告诉我“请求的资源 () 不可用”。

我的web.xml文件如下:

<?xml version="1.0" encoding="UTf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/nx/javaee
    http://java.sun.com/xml/ns/javaee/we-app_2_5.xsd"
version="2.5">
<servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-patter>/faces/*</url-patter>
</servlet-mapping>
<welcome-file-list>
    <welcome-file>faces/index.xhtml</welcome-file>
</welcome-file-list>
<context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
</context-param>
<context-param>
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
    <param-value>.xhtml</param-value>
</context-param>
</web-app>

谁能提供帮助?我正在使用 Eclipse IDE,我的 GlassFish 版本,如上述错误页面中所述,是 3.1.2.2。如果有更多有用的信息,例如目录结构,请向我索取。

谢谢,康纳。

【问题讨论】:

  • 你能显示你的应用程序的 web.xml 文件吗?
  • 我已将我的 web.xml 添加到上面的帖子中。愤怒地强调我实际上并不知道里面应该放什么,所以我很可能弄错了。
  • 尝试添加&lt;context-param&gt; &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt; &lt;param-value&gt;.xhtml&lt;/param-value&gt; &lt;/context-param&gt;并访问localhost:8080/login.jsf
  • 好的,本书后面几页解释了 web.xml 文件应该是什么样子——我对此有点困惑,因为它肯定说'应用程序应该在此时启动' 在指导用户导航到我提供的第二个链接之后(这是否暗示了什么,例如,鉴于他们所说的,我看到的是正确的行为)?我已将我的 web.xml 更改为书中的那个,并且还包括了你给我的 context-param,但我仍然得到相同的结果。有什么想法吗?
  • @yodamad:这本书是你的吗?书中http://localhost:8080/login 示例不是Facelet 文件。它是 webapp 的上下文根(反过来,它应该隐式地打开 &lt;welcome-file&gt; 中声明的 web.xml)。 OP 明确打开/login.xhtml 的声明/期望具有误导性。 @ConorW:暂停 JSF 并学习基本的 Servlet 可能会有所帮助,以便您更好地掌握这种基本的 Servlet API 内容。

标签: java eclipse jsf jakarta-ee glassfish


【解决方案1】:

如果您需要使用http://localhost:8080/login 访问它,您应该将您的应用程序context-root 设置为login。有几种方法可以做到这一点,例如检查此Glassfish tip 或在 Eclipse IDE 中,在项目属性中单击 Web 项目设置并输入应用程序的新上下文根。 这不是错误,所以在您的服务器上运行多个应用程序之前,如果您愿意,可以保持这种方式。

【讨论】:

    猜你喜欢
    • 2011-05-02
    • 1970-01-01
    • 2022-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多