You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Sam Song <sa...@gmail.com> on 2012/02/06 09:05:12 UTC

Struts2 MyFaces Integration Error

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-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org