Re: Struts 7 Migration Issues
Lukasz Lenart <[email protected]> Sun, 14 Sep 2025 15:45:05 +0200
| Newsgroups | gmane.comp.jakarta.struts.user |
|---|---|
| Message-ID | <CAMopvkPdVq-stBh+24aA9wA91hgxLa-g9Zb5y_n=+V=D19YPiQ@mail.gmail.com> |
wt., 9 wrz 2025 o 08:53 Zoran Avtarovski <[email protected]> napisa= =C5=82(a): > > Hi Guys, > > We are moving forward with our plans to migrate from Struts6/Tomcat9 to > Struts7/Tomcat11 but we've hit a few snags I was hoping someone else has > experienced and hopefully solved. > > The first and biggest issue is with Tomcat 11. The app runs as expected > but no pages are rendered and by that I mean nothing at all. Our logs > don't show any errors - we are using log4j2 with DEBUG as the ROOT level > default. The strange thing is when we run the same app on Tomcat 10.1.45 > it works as expected, except for one possibly related issue. > > We are using struts 7.0.3 with Tomcat 11.0.10 and Sitemesh 3.2.2 as our > decorator, we also tried Sitemesh 3.2.1 which made no difference. > > Web.xml is configured as below: > > <filter-mapping> > <filter-name>struts-prepare</filter-name> > <url-pattern>/*</url-pattern> > </filter-mapping> > > <filter-mapping> > <filter-name>sitemesh</filter-name> > <url-pattern>/*</url-pattern> > </filter-mapping> > > <filter-mapping> > <filter-name>struts-execute</filter-name> > <url-pattern>/*</url-pattern> > </filter-mapping> > > This is the critical issue as we want to identify the cause of the issue > and resolve rather than put it off. > > > The second issue is related to sitemesh, which the first issue may also > be. When we run the app on Tomcat 10 struts actions aren't identified in > the path attribute only the resulting jsp is. Let me explain, say we > have a test action configured in my struts.xml as such: > > <action name=3D"testAction" class=3D"testActionClass" method=3D"test"> > <result>/WEB-INF/pages/testPage.jsp</result> > </action> > > If I configure sitemesh like this: > > <mapping decorator=3D"mainDecorator.jsp"/> > <mapping path=3D"*/testAction.action" decorator=3D"testDecorator.jsp"/> > > The result is incorrectly decorated using the default mainDecorator, > this works correctly in our struts 6 setup which is more or less > identical, but if I change it to this: > > <mapping decorator=3D"mainDecorator.jsp"/> > <mapping path=3D"*/testPage.jsp" decorator=3D"testDecorator.jsp"/> > > The page is decorated correctly. As you can imagine that's not what we > want. Mapping to the actions is a far more elegant and manageable. > > The documentation for sitemesh is a bit thin on their site so any > assistance would be appreciated. Please take a look at this PR, it should help you: https://github.com/apache/struts-examples/pull/461 Just to clarify, only Sitemesh 3.2.2 supports JakartaEE so you must use this version when running Struts 7. There is an issue with providing a custom integration as basically there is no extension points in the new Sitemesh version, I reported that issue yet no luck https://github.com/sitemesh/sitemesh3/issues/141 Not sure which approach you want to achieve, but you can take a look on this issue and try to play by setting FORWARD_SERVLET_PATH to different values (action path or JSP path) https://issues.apache.org/jira/browse/WW-5463 Cheers =C5=81ukasz