为啥 FacesServlet 不能有 /*. 的 url 模式?
Posted
技术标签:
【中文标题】为啥 FacesServlet 不能有 /*. 的 url 模式?【英文标题】:Why FacesServlet cannot have a url-pattern of /*.?为什么 FacesServlet 不能有 /*. 的 url 模式? 【发布时间】:2013-02-19 01:32:30 【问题描述】:这是我的 web.xml:
<servlet-mapping>
<servlet-name>Faces Servlet</servlet>
<url-pattern>/*</url-pattern>
</servlet-mapping>
当我导航到:
http://localhost:8080/LearningRoot/index.xhtml
我可以很好地看到该页面,但是当我导航到:
http://localhost:8080/LearningRoot/
我得到错误:
发生错误:
FacesServlet 不能有 /* 的 url 模式。请定义不同的 url 模式。
但是为什么呢?
这是我的欢迎文件:
<welcome-file-list>
<welcome-file>/index.xhtml</welcome-file>
</welcome-file-list>
【问题讨论】:
@KeremBaydoğan 你在真正的 Java Web 应用程序中尝试过吗? 不 :) 这只是一个猜测 :) 【参考方案1】:因为这意味着 所有 遇到该上下文根将由 FacesServlet 处理,FacesServlet 已经知道它不可能满足的要求(这显然没有意义)。
要实现您想要的映射,请在 FaceServlet 上使用 .xhtml
映射
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
【讨论】:
@KorayTugay/
将让它默认为每个标准 webapp 处理的 index
文件。 /*
是一个模棱两可的引用以上是关于为啥 FacesServlet 不能有 /*. 的 url 模式?的主要内容,如果未能解决你的问题,请参考以下文章
FacesServlet.service() 方法在处理请求时消耗了太多时间(自费时间高)
无法在 Tomcat 7 中初始化 FacesServlet - ClassNotFoundException
java.lang.ClassNotFoundException:javax.faces.webapp.FacesServlet
javax/faces/webapp/FacesServlet
java.lang.ClassFormatError:类文件 javax/faces/webapp/FacesServlet 中非本机或抽象方法中的缺失代码属性
将基于 Maven 的 JSF 项目部署到 Tomcat 会导致 java.lang.ClassNotFoundException:javax.faces.webapp.FacesServlet [重