Hi all, I want to use jsf to impl view in Struts2, and write an example web app. Compiling is ok, mvn jetty:run doesn't report any error or warning. But, when I access the example action which's view is based on jsf, I received an error below: Struts Problem Report Struts has detected an unhandled exception:
Messages: FacesContext not found java.lang.RuntimeException: FacesContext not found File: javax/faces/webapp/UIComponentClassicTagBase.java Line number: 324 ---------------------------------------------------------------------------- ---- Stacktraces org.apache.jasper.JasperException: java.lang.RuntimeException: FacesContext not found org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:4 18) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:486) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:380) javax.servlet.http.HttpServlet.service(HttpServlet.java:820) org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390) org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:327) org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126) org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispa tcherResult.java:157) org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSuppor t.java:186) com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionI nvocation.java:374) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:278) org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(Debu ggingInterceptor.java:256) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(D efaultWorkflowInterceptor.java:176) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(Method FilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(Validati onInterceptor.java:265) org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.do Intercept(AnnotationValidationInterceptor.java:68) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(Method FilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(Con versionErrorInterceptor.java:138) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(Parame tersInterceptor.java:211) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(Method FilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(Parame tersInterceptor.java:211) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(Method FilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(St aticParametersInterceptor.java:190) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectI nterceptor.java:75) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterce ptor.java:90) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInt erceptor.java:243) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDr ivenInterceptor.java:100) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(S copedModelDrivenInterceptor.java:141) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingIn terceptor.java:145) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareIn terceptor.java:171) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(Method FilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nIntercepto r.java:176) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletCon figInterceptor.java:164) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasIntercep tor.java:192) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(Ex ceptionMappingInterceptor.java:187) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54) org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:510) org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOper ations.java:77) org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilt er(StrutsPrepareAndExecuteFilter.java:91) org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler .java:1157) org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerColl ection.java:230) org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:11 4) org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) org.mortbay.jetty.Server.handle(Server.java:326) org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:536) org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnectio n.java:915) org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:539) org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:405) org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582 ) java.lang.RuntimeException: FacesContext not found javax.faces.webapp.UIComponentClassicTagBase.getFacesContext(UIComponentClas sicTagBase.java:324) javax.faces.webapp.UIComponentClassicTagBase.setJspId(UIComponentClassicTagB ase.java:226) org.apache.jsp.list_jsp._jspx_meth_f_view_0(org.apache.jsp.list_jsp:110) org.apache.jsp.list_jsp._jspService(org.apache.jsp.list_jsp:82) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:109) javax.servlet.http.HttpServlet.service(HttpServlet.java:820) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:3 89) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:486) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:380) javax.servlet.http.HttpServlet.service(HttpServlet.java:820) org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390) org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:327) org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126) org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispa tcherResult.java:157) org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSuppor t.java:186) com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionI nvocation.java:374) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:278) org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(Debu ggingInterceptor.java:256) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(D efaultWorkflowInterceptor.java:176) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(Method FilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(Validati onInterceptor.java:265) org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.do Intercept(AnnotationValidationInterceptor.java:68) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(Method FilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(Con versionErrorInterceptor.java:138) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(Parame tersInterceptor.java:211) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(Method FilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(Parame tersInterceptor.java:211) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(Method FilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(St aticParametersInterceptor.java:190) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectI nterceptor.java:75) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterce ptor.java:90) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInt erceptor.java:243) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDr ivenInterceptor.java:100) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(S copedModelDrivenInterceptor.java:141) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingIn terceptor.java:145) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareIn terceptor.java:171) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(Method FilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nIntercepto r.java:176) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletCon figInterceptor.java:164) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasIntercep tor.java:192) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(Ex ceptionMappingInterceptor.java:187) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati on.java:249) org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54) org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:510) org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOper ations.java:77) org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilt er(StrutsPrepareAndExecuteFilter.java:91) org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler .java:1157) org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerColl ection.java:230) org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:11 4) org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) org.mortbay.jetty.Server.handle(Server.java:326) org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:536) org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnectio n.java:915) org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:539) org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:405) org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582 ) web.xml: <?xml version="1.0" encoding="UTF-8"?> <web-app id="tutorial" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>Tutorial</display-name> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</liste ner-class> </listener> <listener> <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</lis tener-class> </listener> <servlet> <servlet-name>faces</servlet-name> <!-- <servlet-class>org.apache.myfaces.webapp.MyFacesServlet</servlet-class> --> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>faces</servlet-name> <url-pattern>*.action</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app> Dependencies in maven pom.xml is: <dependencies> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>2.3.1.1</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-config-browser-plugin</artifactId> <version>2.3.1.1</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-junit-plugin</artifactId> <version>2.3.1.1</version> <scope>compile</scope> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> <scope>compile</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.2</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-mock</artifactId> <version>2.0.8</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>3.0.5.RELEASE</version> <scope>compile</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.4</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jsp-api</artifactId> <version>2.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-dojo-plugin</artifactId> <version>2.3.1.1</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-jsf-plugin</artifactId> <version>2.3.1.1</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>3.0.5.RELEASE</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.apache.myfaces.core</groupId> <artifactId>myfaces-api</artifactId> <version>2.1.5</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.apache.myfaces.core</groupId> <artifactId>myfaces-impl</artifactId> <version>2.1.5</version> <scope>compile</scope> </dependency> <dependency> <groupId>javax.faces</groupId> <artifactId>jsf-api</artifactId> <version>2.1</version> <scope>compile</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> <scope>compile</scope> </dependency> </dependencies> Any advice? Thanks. Sam 2012-2-6 --------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org