J'utilise une application Web Seam avec Richfaces pour l'implémentation JSF. Je voudrais mapper une vue à une URL particulière comme vous le feriez avec Spring MVC dans la carte Url.Alias de vue Seam
Voici un extrait de mon /WEB-INF/pages.xml
<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>
Donc, comme vous pouvez le voir, mes pages d'index en fait à /content/index.xhtml réside. Le problème que j'ai est Seam/JSF n'aime pas la redirection ici pour une raison étrange. Je l'ai bien fonctionné quand je viens de supprimer l'extension, mais le mettre dans un autre répertoire semble avoir cassé quelque chose. L'exception que je reçois pour les curieux est le suivant:
18:54:17,525 DEBUG [ExceptionFilter] exception root cause
java.lang.NullPointerException: FacesContext est nul à 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) sur 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) sur org.jboss.seam.servlet.SeamFilter $ FilterChainImpl.doFilter (SeamFilter.java:69) sur org.jboss.seam.web.IdentityFilter. doFilter (IdentityFilter.java:40) sur org.jboss.seam.servlet.SeamFilter $ FilterChainImpl.doFilter (SeamFilter.java:69) sur 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.Authentica tionFailureEventFilter.doFilter (AuthenticationFailureEventFilter.java:77) sur org.jboss.seam.servlet.SeamFilter $ FilterChainImpl.doFilter (SeamFilter.java:69) sur 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) sur org.jboss.seam.web.Ajax4jsfFilter.doFilter (Ajax4jsfFilter.java:56) sur 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.S essionHandler.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.f ilter.security.SecurityFilter.doFilter (SecurityFilter.java:82) sur org.jboss.seam.servlet.SeamFilter $ FilterChainImpl.doFilter (SeamFilter.java:69) sur 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.IpAddressFilt er.doFilter (IpAddressFilter.java:70) sur org.jboss.seam.servlet.SeamFilter $ FilterChainImpl.doFilter (SeamFilter.java:69) sur 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 (Ajax4jsfFi lter.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) sur org.jboss.seam.web.IdentityFilter.doFilter (IdentityFilter.java:40) sur 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) sur org.jboss.seam.servlet.SeamFilter $ FilterChainImpl.doFilter (SeamFilter.java:69) sur com.walterjwhite.seamCore.servlet .filter.security.IpAddressFilter.doFilter (IpAddressFilter.java:70) sur org.jboss.seam.servlet.SeamFilter $ FilterChainImpl.doFilter (SeamFilter.java:69) sur org.jboss.seam.web.ExceptionFilter.doFilter (ExceptionFilter.java:64) à org.jboss.seam.servlet.SeamFilter $ FilterChainImpl.doFilter (SeamFilter.java:69) at org.jboss.seam.web.ContextFilter $ 1.process (ContextFilter.java:42) à org.jboss.seam.servlet.ContextualHttpServletRequest.run (ContextualHttpServletRequest.java:53) at 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) sur 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)
Ai-je manqué quelque chose de vraiment petit, est-ce possible? Je veux simplement garder mon contenu dans un répertoire séparé afin que mon combat empaqueté soit plus facile à démonter et à diagnostiquer quand quelque chose ne fonctionne pas.
Merci,
Walter