java.lang.IllegalArgumentException:无效的网址格式:[xhtml]

时间:2011-03-26 10:50:51

标签: jsf illegalargumentexception url-pattern

我正在尝试部署一个非常简单的&我在glassfish本地服务器上的第一个JSF应用程序(在really good tutorial by BalusC之后)。我完成了创建应用程序的所有步骤。当我尝试在glassfish服务器上部署应用程序时,它失败并出现以下异常消息: -

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

有谁可以解释故障在哪里,我该如何修改?

3 个答案:

答案 0 :(得分:4)

这不是有效的网址格式。您可以将映射排列为前缀映射或扩展映射(来自JSF 2.0 specification):

前缀映射:

<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>

答案 1 :(得分:4)

您的<url-pattern>必须包含扩展名匹配(以*开头)或前缀匹配(以/开头),而不仅仅是xhtml

以下是我的做法。

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

答案 2 :(得分:3)

servlet映射的规则包含在Servlet 3.0 specs

  

映射规范

     

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

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

当您遇到此错误时,请检查您的web.xml和任何地图注释(WebServletWebFilter等)。

您可以在JSF 2.0 spec中找到有关JSF servlet映射的建议。

  

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

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