JSF配置问题(web.xml中/faces/*)

yuxixuan 2012-05-05 02:53:29
有一个JSF项目,项目名是initProp,web.xml文件的配置是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<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>/faces/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>faces/show.jsp</welcome-file>
</welcome-file-list>
</web-app>
==================================
问题是:对应<url-pattern>/faces/*</url-pattern>这行的配置,是不是应该把initProp项目中所有jsp页面都放到一个faces文件夹中,运行的时候才会调用JSF的核心控制器(Faces Servlet)?
...全文
296 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuxixuan 2012-05-05
  • 打赏
  • 举报
回复
多谢楼上的回答。
humanity 2012-05-05
  • 打赏
  • 举报
回复
只是个前缀,不是文件夹名,因为 faces/ 前缀只应该出错在第一次进入的时候,用来创建 FacesContext 之类的 Context 并跟踪这些状态值。相当于你从 /faces/进来的才是 JSF 页面,才有后台的 UIViewRoot 和 FacesContext 对象。没有使用 faces/ 前缀的页面和 Servlet 就没有这些,如果你这时候去拿 FacesContext.getCurrentInstance() 就会出错 RuntimeException 说当前线程没有绑定 FacesContext 实例。
yuxixuan 2012-05-05
  • 打赏
  • 举报
回复
上面的问题自己试了一下,结果如下:

如果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>/aaa/aab/aac/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>aaa/aab/aac/showBean.jsp</welcome-file>
</welcome-file-list>
星号前面的部分(/aaa/aab/aac/)只是一个前缀,而不是物理文件的文件夹。
所以当在浏览器的地址栏中输入:
http://localhost:9999/项目名
时,直接打开的是项目根目录下的showBean.jsp,
如果写成:
<welcome-file>aaa/aab/aac/aad/showBean.jsp</welcome-file>
的话,访问的就是:
项目根目录/aad/showBean.jsp
了。

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧