我正在尝试部署一个非常简单的&我的第一个JSF应用程序(以下是 真的很好的教程由BalusC)在glassfish本地服务器上。我完成了创建应用程序的所有步骤。当我尝试在glassfish服务器上部署应用程序时,它只是失败了,并显示以下异常消息:-

    cannot Deploy Playground
    Deployment Error for module: Playground: Exception while deploying the app : 
    java.lang.IllegalArgumentException: Invalid URL Pattern: [xhtml]

任何人都可以解释哪里是错误,我该如何修改它?

有帮助吗?

解决方案

这不是一个有效的url模式。您可以将映射安排为前缀映射或扩展映射(从 JSF2.0规范):

前缀映射:

<servlet-mapping>
  <servlet-name> faces-servlet-name </servlet-name>
  <url-pattern>/faces/*</url-pattern>
</servlet-mapping>

扩展映射:

<servlet-mapping>
  <servlet-name> faces-servlet-name </servlet-name>
  <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

其他提示

你的 <url-pattern> 必须有一个扩展匹配(以 *)或前缀匹配(从 /)包括在内,而不仅仅是 xhtml.

我是这样做的。

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

Servlet映射的规则在 Servlet3.0规格:

映射的规范

在Web应用程序部署中 描述符,下面的语法是 用于定义映射:

  • 以a开头的字符串 / 字符和以a结尾 /* 后缀用于路径映射。
  • 以a开头的字符串 *. 前缀用作扩展 映射。
  • 空字符串("")是一个特殊的URL模式,它精确地映射到 应用程序的上下文根,即, 表格的要求 http://host:port/<contextroot>/.在 这种情况下,路径信息是 / 而 servlet路径和上下文路径为空 字符串("")。
  • 仅包含 / 字符表示"默认" 应用程序的servlet。在这 如果servlet路径是请求 URI减去上下文路径和 路径信息为null。
  • 所有其他字符串仅用于完全匹配。

当您遇到此错误时,请检查您的web。xml和任何映射注释(WebServlet, Web过滤器, 等。)

您可以在 JSF2.0规范.

当使用扩展映射 建议使用以下映射,但 不需要:

<servlet-mapping>
<servlet-name> faces-servlet-name </servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top