You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Laurie Harper <la...@holoweb.net> on 2005/11/23 05:04:14 UTC

struts-faces and Tiles

I'm trying to get JSF working in my Struts app using the struts-faces
integration library. I have everything set up per the readme that comes
with struts-faces. I can successfully load foo.jsp with the URL 
foo.faces, so I think things are configured correctly.

However, as soon as I change the definition of any layout in 
tiles-defs.xml from .jsp to .faces, I get an exception from tiles:get / 
tiles:insert. As a sanity check, I tried with both MyFaces and the 
reference implementation.

Is this a known limitation or is there something I have to change to 
make this work? I took a look at Section 9.2.8 of the JSF spec (as 
mentioned in the struts-faces README) to see if I was running afowl of 
anything there but it doesn't seem relevant given that I haven't 
actually changed the JSPs to use any Faces tags yet...

L.


[Using the JSF RI]

ERROR [http-8080-Processor25] 
ContainerBase.[Catalina].[localhost].[/].[action] - Servlet.service() 
for servlet action threw exception
java.lang.IllegalStateException: Cannot forward after response has been 
committed
	at 
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:313)
	at 
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
	at 
com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
	at 
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:147)
	at 
org.apache.struts.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130)
	at 
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
	at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
	at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at 
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
	at 
org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574)
	at 
org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)
	at 
org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966)
	at 
org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:604)
	at org.apache.struts.tiles.TilesUtilImpl.doInclude(TilesUtilImpl.java:99)
	at org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:135)
	at org.apache.struts.taglib.tiles.InsertTag.doInclude(InsertTag.java:760)
	at 
org.apache.struts.taglib.tiles.InsertTag$InsertHandler.doEndTag(InsertTag.java:892)
	at org.apache.struts.taglib.tiles.InsertTag.doEndTag(InsertTag.java:462)
	at 
org.apache.jsp.pages.core.layout_jsp._jspx_meth_tiles_get_0(org.apache.jsp.pages.core.layout_jsp:771)
	at 
org.apache.jsp.pages.core.layout_jsp._jspService(org.apache.jsp.pages.core.layout_jsp:341)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at 
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
	at 
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
	at 
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
	at 
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
	at 
com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
	at 
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:147)
	at 
org.apache.struts.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130)
	at 
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
	at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
	at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at 
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
	at 
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
	at 
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
	at 
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
	at 
com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
	at 
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:147)
	at 
org.apache.struts.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130)
	at 
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
	at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
	at 
org.apache.struts.faces.application.FacesTilesRequestProcessor.doForward(FacesTilesRequestProcessor.java:147)
	at 
org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(TilesRequestProcessor.java:239)
	at 
org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:302)
	at 
org.apache.struts.faces.application.FacesTilesRequestProcessor.processForwardConfig(FacesTilesRequestProcessor.java:286)
	at 
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
	at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at 
com.foo.projility.web.auth.UserAuthenticationFilter.doFilter(UserAuthenticationFilter.java:80)
	at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
	at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at 
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:172)
	at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
	at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
	at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
	at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
	at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
	at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
	at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
	at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
	at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
	at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
	at 
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
	at 
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
	at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
	at java.lang.Thread.run(Thread.java:613)


[Using MyFaces]

ERROR [http-8080-Processor25] 
ContainerBase.[Catalina].[localhost].[/].[action] - Servlet.service() 
for servlet action threw exception
javax.faces.FacesException: ServletException in 
'/pages/projects/Projects.faces': Cannot forward after response has been 
committed
	at 
org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:421)
	at 
org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:234)
	at 
org.apache.struts.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130)
	at 
org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:300)
	at 
org.apache.struts.faces.application.FacesTilesRequestProcessor.doForward(FacesTilesRequestProcessor.java:147)
	at 
org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(TilesRequestProcessor.java:239)
	at 
org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:302)
	at 
org.apache.struts.faces.application.FacesTilesRequestProcessor.processForwardConfig(FacesTilesRequestProcessor.java:286)
	at 
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
	at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at 
com.foo.projility.web.auth.UserAuthenticationFilter.doFilter(UserAuthenticationFilter.java:80)
	at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
	at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at 
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:172)
	at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
	at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
	at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
	at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
	at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
	at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
	at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
	at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
	at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
	at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
	at 
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
	at 
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
	at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
	at java.lang.Thread.run(Thread.java:613)
Caused by: javax.servlet.ServletException: ServletException in 
'/pages/projects/Projects.faces': Cannot forward after response has been 
committed
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:109)
	at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at 
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
	at 
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
	at 
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
	at 
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
	at 
org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:415)
	... 33 more


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: struts-faces and Tiles

Posted by Laurie Harper <la...@holoweb.net>.
I'm not sure why it would be treated as an external context, but it 
seems both the RI and MyFaces are treating it as such. The only thing I 
can think of if that's the case would be to prefix the path with the 
application context, which would be painful if I wanted to deploy the 
app to a different context!

I guess I'll have to look into the Javadoc for the ExternalContextImpl 
classes in the two implementations to see if they document when they are 
called.

Thanks for the pointer / suggestion.

L.

Yujun Liang wrote:
> The reason maybe JavaServer Face treating "/pages/projects/Projects.faces"
> as an external context so whenever /pages/projects/Projects.faces is called,
> com.sun.faces.context.ExternalContextImpl will doForward, however, since it
> is included in Tiles Tag, and resposne is committed, you got the exception.
> 
> The problem may be in Sun's com.sun.faces.context.ExternalContextImpl, it
> may have to doInclude.
> 
> org.apache.catalina.core .ApplicationDispatcher.doForward(
> ApplicationDispatcher.java:313)
>        at
> org.apache.catalina.core.ApplicationDispatcher.forward(
> ApplicationDispatcher.java:301)
>        at
> com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java
> :322)
> 
>  Regards
> 
> On 11/23/05, Laurie Harper <la...@holoweb.net> wrote:
>> Correction: the problem occurs when I change a nested tile to .faces
>> instead of .jsp. Changing *only* the containing layout tile's definition
>> seems to work. However, I have to include f:view in the nested JSP;
>> including it in the layout doesn't seem to be sufficient, which makes me
>> think using UI components in the layout may prove troublesome...
>>
>> Still, this gets me far enough to continue playing :-)
>>
>> L.
>>
>> Laurie Harper wrote:
>>> I'm trying to get JSF working in my Struts app using the struts-faces
>>> integration library. I have everything set up per the readme that comes
>>> with struts-faces. I can successfully load foo.jsp with the URL
>>> foo.faces, so I think things are configured correctly.
>>>
>>> However, as soon as I change the definition of any layout in
>>> tiles-defs.xml from .jsp to .faces, I get an exception from tiles:get /
>>> tiles:insert. As a sanity check, I tried with both MyFaces and the
>>> reference implementation.
>>>
>>> Is this a known limitation or is there something I have to change to
>>> make this work? I took a look at Section 9.2.8 of the JSF spec (as
>>> mentioned in the struts-faces README) to see if I was running afowl of
>>> anything there but it doesn't seem relevant given that I haven't
>>> actually changed the JSPs to use any Faces tags yet...
>>>
>>> L.
>>>
>>>
>>> [Using the JSF RI]
>>>
>>> ERROR [http-8080-Processor25]
>>> ContainerBase.[Catalina].[localhost].[/].[action] - Servlet.service()
>>> for servlet action threw exception
>>> java.lang.IllegalStateException: Cannot forward after response has been
>>> committed
>>>     at
>>> org.apache.catalina.core.ApplicationDispatcher.doForward(
>> ApplicationDispatcher.java:313)
>>>     at
>>> org.apache.catalina.core.ApplicationDispatcher.forward(
>> ApplicationDispatcher.java:301)
>>>     at
>>> com.sun.faces.context.ExternalContextImpl.dispatch(
>> ExternalContextImpl.java:322)
>>>     at
>>> com.sun.faces.application.ViewHandlerImpl.renderView(
>> ViewHandlerImpl.java:147)
>>>     at
>>> org.apache.struts.faces.application.ViewHandlerImpl.renderView(
>> ViewHandlerImpl.java:130)
>>>     at
>>> com.sun.faces.lifecycle.RenderResponsePhase.execute(
>> RenderResponsePhase.java:87)
>>>     at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java
>> :200)
>>>     at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java
>> :117)
>>>     at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
>>>     at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
>> ApplicationFilterChain.java:252)
>>>     at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(
>> ApplicationFilterChain.java:173)
>>>     at
>>> org.apache.catalina.core.ApplicationDispatcher.invoke(
>> ApplicationDispatcher.java:672)
>>>     at
>>> org.apache.catalina.core.ApplicationDispatcher.doInclude(
>> ApplicationDispatcher.java:574)
>>>     at
>>> org.apache.catalina.core.ApplicationDispatcher.include(
>> ApplicationDispatcher.java:499)
>>>     at
>>> org.apache.jasper.runtime.JspRuntimeLibrary.include(
>> JspRuntimeLibrary.java:966)
>>>     at
>>> org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java
>> :604)
>>>     at
>>> org.apache.struts.tiles.TilesUtilImpl.doInclude(TilesUtilImpl.java:99)
>>>     at org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:135)
>>>     at
>>> org.apache.struts.taglib.tiles.InsertTag.doInclude(InsertTag.java:760)
>>>     at
>>> org.apache.struts.taglib.tiles.InsertTag$InsertHandler.doEndTag(
>> InsertTag.java:892)
>>>     at
>>> org.apache.struts.taglib.tiles.InsertTag.doEndTag(InsertTag.java:462)
>>>     at
>>> org.apache.jsp.pages.core.layout_jsp._jspx_meth_tiles_get_0(
>> org.apache.jsp.pages.core.layout_jsp:771)
>>>     at
>>> org.apache.jsp.pages.core.layout_jsp._jspService(
>> org.apache.jsp.pages.core.layout_jsp:341)
>>>     at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java
>> :97)
>>>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>>>     at
>>> org.apache.jasper.servlet.JspServletWrapper.service(
>> JspServletWrapper.java:322)
>>>     at
>>> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
>>>     at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
>>>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>>>     at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
>> ApplicationFilterChain.java:252)
>>>     at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(
>> ApplicationFilterChain.java:173)
>>>     at
>>> org.apache.catalina.core.ApplicationDispatcher.invoke(
>> ApplicationDispatcher.java:672)
>>>     at
>>> org.apache.catalina.core.ApplicationDispatcher.processRequest(
>> ApplicationDispatcher.java:463)
>>>     at
>>> org.apache.catalina.core.ApplicationDispatcher.doForward(
>> ApplicationDispatcher.java:398)
>>>     at
>>> org.apache.catalina.core.ApplicationDispatcher.forward(
>> ApplicationDispatcher.java:301)
>>>     at
>>> com.sun.faces.context.ExternalContextImpl.dispatch(
>> ExternalContextImpl.java:322)
>>>     at
>>> com.sun.faces.application.ViewHandlerImpl.renderView(
>> ViewHandlerImpl.java:147)
>>>     at
>>> org.apache.struts.faces.application.ViewHandlerImpl.renderView(
>> ViewHandlerImpl.java:130)
>>>     at
>>> com.sun.faces.lifecycle.RenderResponsePhase.execute(
>> RenderResponsePhase.java:87)
>>>     at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java
>> :200)
>>>     at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java
>> :117)
>>>     at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
>>>     at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
>> ApplicationFilterChain.java:252)
>>>     at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(
>> ApplicationFilterChain.java:173)
>>>     at
>>> org.apache.catalina.core.ApplicationDispatcher.invoke(
>> ApplicationDispatcher.java:672)
>>>     at
>>> org.apache.catalina.core.ApplicationDispatcher.processRequest(
>> ApplicationDispatcher.java:463)
>>>     at
>>> org.apache.catalina.core.ApplicationDispatcher.doForward(
>> ApplicationDispatcher.java:398)
>>>     at
>>> org.apache.catalina.core.ApplicationDispatcher.forward(
>> ApplicationDispatcher.java:301)
>>>     at
>>> com.sun.faces.context.ExternalContextImpl.dispatch(
>> ExternalContextImpl.java:322)
>>>     at
>>> com.sun.faces.application.ViewHandlerImpl.renderView(
>> ViewHandlerImpl.java:147)
>>>     at
>>> org.apache.struts.faces.application.ViewHandlerImpl.renderView(
>> ViewHandlerImpl.java:130)
>>>     at
>>> com.sun.faces.lifecycle.RenderResponsePhase.execute(
>> RenderResponsePhase.java:87)
>>>     at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java
>> :200)
>>>     at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java
>> :117)
>>>     at
>>> org.apache.struts.faces.application.FacesTilesRequestProcessor.doForward
>> (FacesTilesRequestProcessor.java:147)
>>>     at
>>> org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(
>> TilesRequestProcessor.java:239)
>>>     at
>>> org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(
>> TilesRequestProcessor.java:302)
>>>     at
>>>
>> org.apache.struts.faces.application.FacesTilesRequestProcessor.processForwardConfig
>> (FacesTilesRequestProcessor.java:286)
>>>     at
>>> org.apache.struts.action.RequestProcessor.process(RequestProcessor.java
>> :229)
>>>     at
>>> org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
>>>     at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java
>> :414)
>>>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
>>>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>>>     at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
>> ApplicationFilterChain.java:252)
>>>     at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(
>> ApplicationFilterChain.java:173)
>>>     at
>>> com.foo.projility.web.auth.UserAuthenticationFilter.doFilter(
>> UserAuthenticationFilter.java:80)
>>>     at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
>> ApplicationFilterChain.java:202)
>>>     at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(
>> ApplicationFilterChain.java:173)
>>>     at
>>>
>> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal
>> (OpenSessionInViewFilter.java:172)
>>>     at
>>> org.springframework.web.filter.OncePerRequestFilter.doFilter(
>> OncePerRequestFilter.java:76)
>>>     at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
>> ApplicationFilterChain.java:202)
>>>     at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(
>> ApplicationFilterChain.java:173)
>>>     at
>>> org.apache.catalina.core.StandardWrapperValve.invoke(
>> StandardWrapperValve.java:213)
>>>     at
>>> org.apache.catalina.core.StandardContextValve.invoke(
>> StandardContextValve.java:178)
>>>     at
>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
>> :126)
>>>     at
>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
>> :105)
>>>     at
>>> org.apache.catalina.core.StandardEngineValve.invoke(
>> StandardEngineValve.java:107)
>>>     at
>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java
>> :148)
>>>     at
>>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
>> :856)
>>>     at
>>>
>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection
>> (Http11Protocol.java:744)
>>>     at
>>> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(
>> PoolTcpEndpoint.java:527)
>>>     at
>>> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(
>> LeaderFollowerWorkerThread.java:80)
>>>     at
>>> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
>> ThreadPool.java:684)
>>>     at java.lang.Thread.run(Thread.java:613)
>>>
>>>
>>> [Using MyFaces]
>>>
>>> ERROR [http-8080-Processor25]
>>> ContainerBase.[Catalina].[localhost].[/].[action] - Servlet.service()
>>> for servlet action threw exception
>>> javax.faces.FacesException: ServletException in
>>> '/pages/projects/Projects.faces': Cannot forward after response has been
>>> committed
>>>     at
>>> org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(
>> ServletExternalContextImpl.java:421)
>>>     at
>>> org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(
>> JspViewHandlerImpl.java:234)
>>>     at
>>> org.apache.struts.faces.application.ViewHandlerImpl.renderView(
>> ViewHandlerImpl.java:130)
>>>     at
>>> org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java
>> :300)
>>>     at
>>> org.apache.struts.faces.application.FacesTilesRequestProcessor.doForward
>> (FacesTilesRequestProcessor.java:147)
>>>     at
>>> org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(
>> TilesRequestProcessor.java:239)
>>>     at
>>> org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(
>> TilesRequestProcessor.java:302)
>>>     at
>>>
>> org.apache.struts.faces.application.FacesTilesRequestProcessor.processForwardConfig
>> (FacesTilesRequestProcessor.java:286)
>>>     at
>>> org.apache.struts.action.RequestProcessor.process(RequestProcessor.java
>> :229)
>>>     at
>>> org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
>>>     at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java
>> :414)
>>>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
>>>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>>>     at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
>> ApplicationFilterChain.java:252)
>>>     at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(
>> ApplicationFilterChain.java:173)
>>>     at
>>> com.foo.projility.web.auth.UserAuthenticationFilter.doFilter(
>> UserAuthenticationFilter.java:80)
>>>     at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
>> ApplicationFilterChain.java:202)
>>>     at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(
>> ApplicationFilterChain.java:173)
>>>     at
>>>
>> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal
>> (OpenSessionInViewFilter.java:172)
>>>     at
>>> org.springframework.web.filter.OncePerRequestFilter.doFilter(
>> OncePerRequestFilter.java:76)
>>>     at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
>> ApplicationFilterChain.java:202)
>>>     at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(
>> ApplicationFilterChain.java:173)
>>>     at
>>> org.apache.catalina.core.StandardWrapperValve.invoke(
>> StandardWrapperValve.java:213)
>>>     at
>>> org.apache.catalina.core.StandardContextValve.invoke(
>> StandardContextValve.java:178)
>>>     at
>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
>> :126)
>>>     at
>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
>> :105)
>>>     at
>>> org.apache.catalina.core.StandardEngineValve.invoke(
>> StandardEngineValve.java:107)
>>>     at
>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java
>> :148)
>>>     at
>>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
>> :856)
>>>     at
>>>
>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection
>> (Http11Protocol.java:744)
>>>     at
>>> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(
>> PoolTcpEndpoint.java:527)
>>>     at
>>> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(
>> LeaderFollowerWorkerThread.java:80)
>>>     at
>>> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
>> ThreadPool.java:684)
>>>     at java.lang.Thread.run(Thread.java:613)
>>> Caused by: javax.servlet.ServletException: ServletException in
>>> '/pages/projects/Projects.faces': Cannot forward after response has been
>>> committed
>>>     at javax.faces.webapp.FacesServlet.service(FacesServlet.java:109)
>>>     at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
>> ApplicationFilterChain.java:252)
>>>     at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(
>> ApplicationFilterChain.java:173)
>>>     at
>>> org.apache.catalina.core.ApplicationDispatcher.invoke(
>> ApplicationDispatcher.java:672)
>>>     at
>>> org.apache.catalina.core.ApplicationDispatcher.processRequest(
>> ApplicationDispatcher.java:463)
>>>     at
>>> org.apache.catalina.core.ApplicationDispatcher.doForward(
>> ApplicationDispatcher.java:398)
>>>     at
>>> org.apache.catalina.core.ApplicationDispatcher.forward(
>> ApplicationDispatcher.java:301)
>>>     at
>>> org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(
>> ServletExternalContextImpl.java:415)
>>>     ... 33 more
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>> For additional commands, e-mail: user-help@struts.apache.org
>>
>>
> 
> 
> --
> Yujun Liang
> yujun.liang@acm.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: struts-faces and Tiles

Posted by Yujun Liang <yu...@acm.org>.
The reason maybe JavaServer Face treating "/pages/projects/Projects.faces"
as an external context so whenever /pages/projects/Projects.faces is called,
com.sun.faces.context.ExternalContextImpl will doForward, however, since it
is included in Tiles Tag, and resposne is committed, you got the exception.

The problem may be in Sun's com.sun.faces.context.ExternalContextImpl, it
may have to doInclude.

org.apache.catalina.core .ApplicationDispatcher.doForward(
ApplicationDispatcher.java:313)
       at
org.apache.catalina.core.ApplicationDispatcher.forward(
ApplicationDispatcher.java:301)
       at
com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java
:322)

 Regards

On 11/23/05, Laurie Harper <la...@holoweb.net> wrote:
>
> Correction: the problem occurs when I change a nested tile to .faces
> instead of .jsp. Changing *only* the containing layout tile's definition
> seems to work. However, I have to include f:view in the nested JSP;
> including it in the layout doesn't seem to be sufficient, which makes me
> think using UI components in the layout may prove troublesome...
>
> Still, this gets me far enough to continue playing :-)
>
> L.
>
> Laurie Harper wrote:
> > I'm trying to get JSF working in my Struts app using the struts-faces
> > integration library. I have everything set up per the readme that comes
> > with struts-faces. I can successfully load foo.jsp with the URL
> > foo.faces, so I think things are configured correctly.
> >
> > However, as soon as I change the definition of any layout in
> > tiles-defs.xml from .jsp to .faces, I get an exception from tiles:get /
> > tiles:insert. As a sanity check, I tried with both MyFaces and the
> > reference implementation.
> >
> > Is this a known limitation or is there something I have to change to
> > make this work? I took a look at Section 9.2.8 of the JSF spec (as
> > mentioned in the struts-faces README) to see if I was running afowl of
> > anything there but it doesn't seem relevant given that I haven't
> > actually changed the JSPs to use any Faces tags yet...
> >
> > L.
> >
> >
> > [Using the JSF RI]
> >
> > ERROR [http-8080-Processor25]
> > ContainerBase.[Catalina].[localhost].[/].[action] - Servlet.service()
> > for servlet action threw exception
> > java.lang.IllegalStateException: Cannot forward after response has been
> > committed
> >     at
> > org.apache.catalina.core.ApplicationDispatcher.doForward(
> ApplicationDispatcher.java:313)
> >
> >     at
> > org.apache.catalina.core.ApplicationDispatcher.forward(
> ApplicationDispatcher.java:301)
> >
> >     at
> > com.sun.faces.context.ExternalContextImpl.dispatch(
> ExternalContextImpl.java:322)
> >
> >     at
> > com.sun.faces.application.ViewHandlerImpl.renderView(
> ViewHandlerImpl.java:147)
> >
> >     at
> > org.apache.struts.faces.application.ViewHandlerImpl.renderView(
> ViewHandlerImpl.java:130)
> >
> >     at
> > com.sun.faces.lifecycle.RenderResponsePhase.execute(
> RenderResponsePhase.java:87)
> >
> >     at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java
> :200)
> >     at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java
> :117)
> >     at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
> >     at
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> ApplicationFilterChain.java:252)
> >
> >     at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(
> ApplicationFilterChain.java:173)
> >
> >     at
> > org.apache.catalina.core.ApplicationDispatcher.invoke(
> ApplicationDispatcher.java:672)
> >
> >     at
> > org.apache.catalina.core.ApplicationDispatcher.doInclude(
> ApplicationDispatcher.java:574)
> >
> >     at
> > org.apache.catalina.core.ApplicationDispatcher.include(
> ApplicationDispatcher.java:499)
> >
> >     at
> > org.apache.jasper.runtime.JspRuntimeLibrary.include(
> JspRuntimeLibrary.java:966)
> >
> >     at
> > org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java
> :604)
> >     at
> > org.apache.struts.tiles.TilesUtilImpl.doInclude(TilesUtilImpl.java:99)
> >     at org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:135)
> >     at
> > org.apache.struts.taglib.tiles.InsertTag.doInclude(InsertTag.java:760)
> >     at
> > org.apache.struts.taglib.tiles.InsertTag$InsertHandler.doEndTag(
> InsertTag.java:892)
> >
> >     at
> > org.apache.struts.taglib.tiles.InsertTag.doEndTag(InsertTag.java:462)
> >     at
> > org.apache.jsp.pages.core.layout_jsp._jspx_meth_tiles_get_0(
> org.apache.jsp.pages.core.layout_jsp:771)
> >
> >     at
> > org.apache.jsp.pages.core.layout_jsp._jspService(
> org.apache.jsp.pages.core.layout_jsp:341)
> >
> >     at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java
> :97)
> >     at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> >     at
> > org.apache.jasper.servlet.JspServletWrapper.service(
> JspServletWrapper.java:322)
> >
> >     at
> > org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
> >     at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
> >     at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> >     at
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> ApplicationFilterChain.java:252)
> >
> >     at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(
> ApplicationFilterChain.java:173)
> >
> >     at
> > org.apache.catalina.core.ApplicationDispatcher.invoke(
> ApplicationDispatcher.java:672)
> >
> >     at
> > org.apache.catalina.core.ApplicationDispatcher.processRequest(
> ApplicationDispatcher.java:463)
> >
> >     at
> > org.apache.catalina.core.ApplicationDispatcher.doForward(
> ApplicationDispatcher.java:398)
> >
> >     at
> > org.apache.catalina.core.ApplicationDispatcher.forward(
> ApplicationDispatcher.java:301)
> >
> >     at
> > com.sun.faces.context.ExternalContextImpl.dispatch(
> ExternalContextImpl.java:322)
> >
> >     at
> > com.sun.faces.application.ViewHandlerImpl.renderView(
> ViewHandlerImpl.java:147)
> >
> >     at
> > org.apache.struts.faces.application.ViewHandlerImpl.renderView(
> ViewHandlerImpl.java:130)
> >
> >     at
> > com.sun.faces.lifecycle.RenderResponsePhase.execute(
> RenderResponsePhase.java:87)
> >
> >     at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java
> :200)
> >     at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java
> :117)
> >     at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
> >     at
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> ApplicationFilterChain.java:252)
> >
> >     at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(
> ApplicationFilterChain.java:173)
> >
> >     at
> > org.apache.catalina.core.ApplicationDispatcher.invoke(
> ApplicationDispatcher.java:672)
> >
> >     at
> > org.apache.catalina.core.ApplicationDispatcher.processRequest(
> ApplicationDispatcher.java:463)
> >
> >     at
> > org.apache.catalina.core.ApplicationDispatcher.doForward(
> ApplicationDispatcher.java:398)
> >
> >     at
> > org.apache.catalina.core.ApplicationDispatcher.forward(
> ApplicationDispatcher.java:301)
> >
> >     at
> > com.sun.faces.context.ExternalContextImpl.dispatch(
> ExternalContextImpl.java:322)
> >
> >     at
> > com.sun.faces.application.ViewHandlerImpl.renderView(
> ViewHandlerImpl.java:147)
> >
> >     at
> > org.apache.struts.faces.application.ViewHandlerImpl.renderView(
> ViewHandlerImpl.java:130)
> >
> >     at
> > com.sun.faces.lifecycle.RenderResponsePhase.execute(
> RenderResponsePhase.java:87)
> >
> >     at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java
> :200)
> >     at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java
> :117)
> >     at
> > org.apache.struts.faces.application.FacesTilesRequestProcessor.doForward
> (FacesTilesRequestProcessor.java:147)
> >
> >     at
> > org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(
> TilesRequestProcessor.java:239)
> >
> >     at
> > org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(
> TilesRequestProcessor.java:302)
> >
> >     at
> >
> org.apache.struts.faces.application.FacesTilesRequestProcessor.processForwardConfig
> (FacesTilesRequestProcessor.java:286)
> >
> >     at
> > org.apache.struts.action.RequestProcessor.process(RequestProcessor.java
> :229)
> >
> >     at
> > org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
> >     at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java
> :414)
> >     at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> >     at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> >     at
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> ApplicationFilterChain.java:252)
> >
> >     at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(
> ApplicationFilterChain.java:173)
> >
> >     at
> > com.foo.projility.web.auth.UserAuthenticationFilter.doFilter(
> UserAuthenticationFilter.java:80)
> >
> >     at
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> ApplicationFilterChain.java:202)
> >
> >     at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(
> ApplicationFilterChain.java:173)
> >
> >     at
> >
> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal
> (OpenSessionInViewFilter.java:172)
> >
> >     at
> > org.springframework.web.filter.OncePerRequestFilter.doFilter(
> OncePerRequestFilter.java:76)
> >
> >     at
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> ApplicationFilterChain.java:202)
> >
> >     at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(
> ApplicationFilterChain.java:173)
> >
> >     at
> > org.apache.catalina.core.StandardWrapperValve.invoke(
> StandardWrapperValve.java:213)
> >
> >     at
> > org.apache.catalina.core.StandardContextValve.invoke(
> StandardContextValve.java:178)
> >
> >     at
> > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
> :126)
> >
> >     at
> > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
> :105)
> >
> >     at
> > org.apache.catalina.core.StandardEngineValve.invoke(
> StandardEngineValve.java:107)
> >
> >     at
> > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java
> :148)
> >     at
> > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
> :856)
> >     at
> >
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection
> (Http11Protocol.java:744)
> >
> >     at
> > org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(
> PoolTcpEndpoint.java:527)
> >
> >     at
> > org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(
> LeaderFollowerWorkerThread.java:80)
> >
> >     at
> > org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
> ThreadPool.java:684)
> >
> >     at java.lang.Thread.run(Thread.java:613)
> >
> >
> > [Using MyFaces]
> >
> > ERROR [http-8080-Processor25]
> > ContainerBase.[Catalina].[localhost].[/].[action] - Servlet.service()
> > for servlet action threw exception
> > javax.faces.FacesException: ServletException in
> > '/pages/projects/Projects.faces': Cannot forward after response has been
> > committed
> >     at
> > org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(
> ServletExternalContextImpl.java:421)
> >
> >     at
> > org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(
> JspViewHandlerImpl.java:234)
> >
> >     at
> > org.apache.struts.faces.application.ViewHandlerImpl.renderView(
> ViewHandlerImpl.java:130)
> >
> >     at
> > org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java
> :300)
> >     at
> > org.apache.struts.faces.application.FacesTilesRequestProcessor.doForward
> (FacesTilesRequestProcessor.java:147)
> >
> >     at
> > org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(
> TilesRequestProcessor.java:239)
> >
> >     at
> > org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(
> TilesRequestProcessor.java:302)
> >
> >     at
> >
> org.apache.struts.faces.application.FacesTilesRequestProcessor.processForwardConfig
> (FacesTilesRequestProcessor.java:286)
> >
> >     at
> > org.apache.struts.action.RequestProcessor.process(RequestProcessor.java
> :229)
> >
> >     at
> > org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
> >     at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java
> :414)
> >     at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> >     at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> >     at
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> ApplicationFilterChain.java:252)
> >
> >     at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(
> ApplicationFilterChain.java:173)
> >
> >     at
> > com.foo.projility.web.auth.UserAuthenticationFilter.doFilter(
> UserAuthenticationFilter.java:80)
> >
> >     at
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> ApplicationFilterChain.java:202)
> >
> >     at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(
> ApplicationFilterChain.java:173)
> >
> >     at
> >
> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal
> (OpenSessionInViewFilter.java:172)
> >
> >     at
> > org.springframework.web.filter.OncePerRequestFilter.doFilter(
> OncePerRequestFilter.java:76)
> >
> >     at
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> ApplicationFilterChain.java:202)
> >
> >     at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(
> ApplicationFilterChain.java:173)
> >
> >     at
> > org.apache.catalina.core.StandardWrapperValve.invoke(
> StandardWrapperValve.java:213)
> >
> >     at
> > org.apache.catalina.core.StandardContextValve.invoke(
> StandardContextValve.java:178)
> >
> >     at
> > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
> :126)
> >
> >     at
> > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
> :105)
> >
> >     at
> > org.apache.catalina.core.StandardEngineValve.invoke(
> StandardEngineValve.java:107)
> >
> >     at
> > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java
> :148)
> >     at
> > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
> :856)
> >     at
> >
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection
> (Http11Protocol.java:744)
> >
> >     at
> > org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(
> PoolTcpEndpoint.java:527)
> >
> >     at
> > org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(
> LeaderFollowerWorkerThread.java:80)
> >
> >     at
> > org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
> ThreadPool.java:684)
> >
> >     at java.lang.Thread.run(Thread.java:613)
> > Caused by: javax.servlet.ServletException: ServletException in
> > '/pages/projects/Projects.faces': Cannot forward after response has been
> > committed
> >     at javax.faces.webapp.FacesServlet.service(FacesServlet.java:109)
> >     at
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> ApplicationFilterChain.java:252)
> >
> >     at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(
> ApplicationFilterChain.java:173)
> >
> >     at
> > org.apache.catalina.core.ApplicationDispatcher.invoke(
> ApplicationDispatcher.java:672)
> >
> >     at
> > org.apache.catalina.core.ApplicationDispatcher.processRequest(
> ApplicationDispatcher.java:463)
> >
> >     at
> > org.apache.catalina.core.ApplicationDispatcher.doForward(
> ApplicationDispatcher.java:398)
> >
> >     at
> > org.apache.catalina.core.ApplicationDispatcher.forward(
> ApplicationDispatcher.java:301)
> >
> >     at
> > org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(
> ServletExternalContextImpl.java:415)
> >
> >     ... 33 more
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>
>


--
Yujun Liang
yujun.liang@acm.org

Re: struts-faces and Tiles

Posted by Laurie Harper <la...@holoweb.net>.
Correction: the problem occurs when I change a nested tile to .faces 
instead of .jsp. Changing *only* the containing layout tile's definition 
seems to work. However, I have to include f:view in the nested JSP; 
including it in the layout doesn't seem to be sufficient, which makes me 
think using UI components in the layout may prove troublesome...

Still, this gets me far enough to continue playing :-)

L.

Laurie Harper wrote:
> I'm trying to get JSF working in my Struts app using the struts-faces
> integration library. I have everything set up per the readme that comes
> with struts-faces. I can successfully load foo.jsp with the URL 
> foo.faces, so I think things are configured correctly.
> 
> However, as soon as I change the definition of any layout in 
> tiles-defs.xml from .jsp to .faces, I get an exception from tiles:get / 
> tiles:insert. As a sanity check, I tried with both MyFaces and the 
> reference implementation.
> 
> Is this a known limitation or is there something I have to change to 
> make this work? I took a look at Section 9.2.8 of the JSF spec (as 
> mentioned in the struts-faces README) to see if I was running afowl of 
> anything there but it doesn't seem relevant given that I haven't 
> actually changed the JSPs to use any Faces tags yet...
> 
> L.
> 
> 
> [Using the JSF RI]
> 
> ERROR [http-8080-Processor25] 
> ContainerBase.[Catalina].[localhost].[/].[action] - Servlet.service() 
> for servlet action threw exception
> java.lang.IllegalStateException: Cannot forward after response has been 
> committed
>     at 
> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:313) 
> 
>     at 
> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301) 
> 
>     at 
> com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322) 
> 
>     at 
> com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:147) 
> 
>     at 
> org.apache.struts.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130) 
> 
>     at 
> com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87) 
> 
>     at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
>     at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
>     at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
>     at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) 
> 
>     at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 
> 
>     at 
> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) 
> 
>     at 
> org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574) 
> 
>     at 
> org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499) 
> 
>     at 
> org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966) 
> 
>     at 
> org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:604)
>     at 
> org.apache.struts.tiles.TilesUtilImpl.doInclude(TilesUtilImpl.java:99)
>     at org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:135)
>     at 
> org.apache.struts.taglib.tiles.InsertTag.doInclude(InsertTag.java:760)
>     at 
> org.apache.struts.taglib.tiles.InsertTag$InsertHandler.doEndTag(InsertTag.java:892) 
> 
>     at 
> org.apache.struts.taglib.tiles.InsertTag.doEndTag(InsertTag.java:462)
>     at 
> org.apache.jsp.pages.core.layout_jsp._jspx_meth_tiles_get_0(org.apache.jsp.pages.core.layout_jsp:771) 
> 
>     at 
> org.apache.jsp.pages.core.layout_jsp._jspService(org.apache.jsp.pages.core.layout_jsp:341) 
> 
>     at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>     at 
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322) 
> 
>     at 
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
>     at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>     at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) 
> 
>     at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 
> 
>     at 
> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) 
> 
>     at 
> org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) 
> 
>     at 
> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398) 
> 
>     at 
> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301) 
> 
>     at 
> com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322) 
> 
>     at 
> com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:147) 
> 
>     at 
> org.apache.struts.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130) 
> 
>     at 
> com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87) 
> 
>     at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
>     at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
>     at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
>     at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) 
> 
>     at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 
> 
>     at 
> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) 
> 
>     at 
> org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) 
> 
>     at 
> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398) 
> 
>     at 
> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301) 
> 
>     at 
> com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322) 
> 
>     at 
> com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:147) 
> 
>     at 
> org.apache.struts.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130) 
> 
>     at 
> com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87) 
> 
>     at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
>     at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
>     at 
> org.apache.struts.faces.application.FacesTilesRequestProcessor.doForward(FacesTilesRequestProcessor.java:147) 
> 
>     at 
> org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(TilesRequestProcessor.java:239) 
> 
>     at 
> org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:302) 
> 
>     at 
> org.apache.struts.faces.application.FacesTilesRequestProcessor.processForwardConfig(FacesTilesRequestProcessor.java:286) 
> 
>     at 
> org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229) 
> 
>     at 
> org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
>     at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>     at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) 
> 
>     at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 
> 
>     at 
> com.foo.projility.web.auth.UserAuthenticationFilter.doFilter(UserAuthenticationFilter.java:80) 
> 
>     at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) 
> 
>     at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 
> 
>     at 
> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:172) 
> 
>     at 
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
> 
>     at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) 
> 
>     at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 
> 
>     at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) 
> 
>     at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) 
> 
>     at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) 
> 
>     at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) 
> 
>     at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) 
> 
>     at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
>     at 
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
>     at 
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744) 
> 
>     at 
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) 
> 
>     at 
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) 
> 
>     at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) 
> 
>     at java.lang.Thread.run(Thread.java:613)
> 
> 
> [Using MyFaces]
> 
> ERROR [http-8080-Processor25] 
> ContainerBase.[Catalina].[localhost].[/].[action] - Servlet.service() 
> for servlet action threw exception
> javax.faces.FacesException: ServletException in 
> '/pages/projects/Projects.faces': Cannot forward after response has been 
> committed
>     at 
> org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:421) 
> 
>     at 
> org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:234) 
> 
>     at 
> org.apache.struts.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130) 
> 
>     at 
> org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:300)
>     at 
> org.apache.struts.faces.application.FacesTilesRequestProcessor.doForward(FacesTilesRequestProcessor.java:147) 
> 
>     at 
> org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(TilesRequestProcessor.java:239) 
> 
>     at 
> org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:302) 
> 
>     at 
> org.apache.struts.faces.application.FacesTilesRequestProcessor.processForwardConfig(FacesTilesRequestProcessor.java:286) 
> 
>     at 
> org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229) 
> 
>     at 
> org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
>     at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>     at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) 
> 
>     at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 
> 
>     at 
> com.foo.projility.web.auth.UserAuthenticationFilter.doFilter(UserAuthenticationFilter.java:80) 
> 
>     at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) 
> 
>     at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 
> 
>     at 
> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:172) 
> 
>     at 
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
> 
>     at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) 
> 
>     at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 
> 
>     at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) 
> 
>     at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) 
> 
>     at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) 
> 
>     at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) 
> 
>     at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) 
> 
>     at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
>     at 
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
>     at 
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744) 
> 
>     at 
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) 
> 
>     at 
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) 
> 
>     at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) 
> 
>     at java.lang.Thread.run(Thread.java:613)
> Caused by: javax.servlet.ServletException: ServletException in 
> '/pages/projects/Projects.faces': Cannot forward after response has been 
> committed
>     at javax.faces.webapp.FacesServlet.service(FacesServlet.java:109)
>     at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) 
> 
>     at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 
> 
>     at 
> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) 
> 
>     at 
> org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) 
> 
>     at 
> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398) 
> 
>     at 
> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301) 
> 
>     at 
> org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:415) 
> 
>     ... 33 more


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org