【发布时间】:2009-07-06 23:20:26
【问题描述】:
我正在为 JSF 实现运行一个带有 Richfaces 的 Seam Web 应用程序。我想将视图映射到特定的 URL,就像在 Url Map 中使用 Spring MVC 一样。
这是我的 /WEB-INF/pages.xml 的 sn-p
<page view-id="*" scheme="http">
<navigation from-action="#{identity.logout}">
<redirect view-id="/content/index.xhtml"/>
</navigation>
</page>
<page view-id="/content/index.xhtml">
<rewrite pattern="/index"/>
</page>
因此,正如您所见,我的索引页面实际上位于 /content/index.xhtml。我遇到的问题是 Seam/JSF 出于某种奇怪的原因不喜欢这里的重定向。当我刚刚删除扩展名时,我的工作正常,但是将其放入另一个目录似乎已经破坏了一些东西。对于那些好奇的人,我得到的例外如下:
18:54:17,525 DEBUG [ExceptionFilter] exception root cause
java.lang.NullPointerException: FacesContext 为空 在 org.ajax4jsf.context.AjaxContext.getCurrentInstance(AjaxContext.java:159) 在 org.ajax4jsf.context.AjaxContext.getCurrentInstance(AjaxContext.java:144) 在 org.ajax4jsf.component.AjaxViewRoot.getViewId(AjaxViewRoot.java:580) 在 org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:203) 在 com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:108) 在 com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:266) 在 com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:159) 在 javax.faces.webapp.FacesServlet.service(FacesServlet.java:245) 在 org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:502) 在 org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1148) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83) 在 org.jboss.seam.web.RewriteFilter.doFilter(RewriteFilter.java:63) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 在 com.walterjwhite.webContent.servlet.filter.FirstVisitFilter.doFilter(FirstVisitFilter.java:55) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 在 org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 在 com.walterjwhite.seamCore.servlet.filter.security.SecurityFilter.doFilter(SecurityFilter.java:82) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 在 org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 在 org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 在 com.walterjwhite.seamCore.servlet.filter.security.AuthenticationFailureEventFilter.doFilter(AuthenticationFailureEventFilter.java:77) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 在 com.walterjwhite.seamCore.servlet.filter.security.IpAddressFilter.doFilter(IpAddressFilter.java:70) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 在 org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:73) 在 org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:510) 在 org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 在 org.jboss.seam.web.HotDeployFilter.doFilter(HotDeployFilter.java:53) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 在 org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 在 org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158) 在 org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1139) 在 org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:378) 在 org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 在 org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) 在 org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 在 org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:417) 在 org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:334) 在 org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126) 在 com.walterjwhite.webContent.servlet.filter.FirstVisitFilter.doFilter(FirstVisitFilter.java:49) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 在 org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 在 com.walterjwhite.seamCore.servlet.filter.security.SecurityFilter.doFilter(SecurityFilter.java:82) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 在 org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 在 org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 在 com.walterjwhite.seamCore.servlet.filter.security.AuthenticationFailureEventFilter.doFilter(AuthenticationFailureEventFilter.java:77) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 在 com.walterjwhite.seamCore.servlet.filter.security.IpAddressFilter.doFilter(IpAddressFilter.java:70) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 在 org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:73) 在 org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178) 在 org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290) 在 org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368) 在 org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495) 在 org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 在 org.jboss.seam.web.HotDeployFilter.doFilter(HotDeployFilter.java:53) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 在 org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 在 org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158) 在 org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1139) 在 org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:378) 在 org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 在 org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) 在 org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 在 org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:417) 在 org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:334) 在 org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126) 在 com.walterjwhite.seamCore.servlet.filter.security.SecurityFilter.doFilter(SecurityFilter.java:62) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 在 org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 在 org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 在 com.walterjwhite.seamCore.servlet.filter.security.AuthenticationFailureEventFilter.doFilter(AuthenticationFailureEventFilter.java:77) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 在 com.walterjwhite.seamCore.servlet.filter.security.IpAddressFilter.doFilter(IpAddressFilter.java:70) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 在 org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 在 org.jboss.seam.web.ContextFilter$1.process(ContextFilter.java:42) 在 org.jboss.seam.servlet.ContextualHttpServletRequest.run(ContextualHttpServletRequest.java:53) 在 org.jboss.seam.web.ContextFilter.doFilter(ContextFilter.java:37) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:73) 在 org.jboss.seam.web.HotDeployFilter.doFilter(HotDeployFilter.java:53) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 在 org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60) 在 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 在 org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158) 在 org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1139) 在 org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:378) 在 org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 在 org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) 在 org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 在 org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:417) 在 org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230) 在 org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) 在 org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 在 org.mortbay.jetty.Server.handle(Server.java:324) 在 org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:535) 在 org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:865) 在 org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:539) 在 org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) 在 org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 在 org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) 在 org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:520)
我是否错过了一些非常小的东西,这可能吗?
我只是想将我的内容保存在一个单独的目录中,以便我打包的战争在某些东西不起作用时更容易拆卸和诊断。
谢谢,
沃尔特
【问题讨论】: