今天jsf的<error-page>头疼,找了一篇啊三的文章,明天开始试着翻译下:)中文几乎没有这方面的东西
原文在这: http://punterpandey.blogspot.com/
仔细看了一下,阿三说:
在jsf框架(myfaces 1.1.1)种解决这个问题就没那么简单。主要的问题是jsf的lifecycle。如果和在jsp中使用的方法定义error-page,将会得到如下异常 java.lang.IllegalStateException : parent is null?!
我使用myfaces1.1.5,没得到这种异常,可能是阿三用的版本比较低的关系。下边的2种情况也没出现,所以没什么翻译的价值了。。估计我会被鄙视哈哈。
我现在面临的问题是,如果转向之前需要做一些工作该怎么办?比如对于404,我希望根据站点的不同(127.0.0.1和localhost)转向不同提示页面。嗯,得找找方法。。
9月21日
今天写了一个PhaseListener实现了这个功能,用filter也能够实现,不过这几乎是买椟还珠。。。每一个请求都需要走这个PhaseListener/filter类,而这个类只对很少的一部分请求起作用,这么对资源的浪费可不好。于是用2个原始的方法来解决:
1。直接请求servlet,这没什么好说的,可以在service中做各种处理,然后在web.xml种配置servlet-name、servlet-class、url-pattern
2。保持jsf纯种血统--web.xml中只有avax.faces.webapp.FacesServlet。。。写一个jsp做转发,做和上边说的servlet相同的工作
我个人更倾向于第1种处理方法.哪位同学有更好的处理方式,请指点一二:)