[ 
https://issues.apache.org/jira/browse/WW-5178?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart reopened WW-5178:
-------------------------------

> Freemarker Template Error when migrating Struts2-Core from 2.5.29 to 2.5.30
> ---------------------------------------------------------------------------
>
>                 Key: WW-5178
>                 URL: https://issues.apache.org/jira/browse/WW-5178
>             Project: Struts 2
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.5.30
>            Reporter: Nathan Hertner
>            Assignee: Yasser Zamani
>            Priority: Major
>             Fix For: 2.5.31
>
>
> Originally, we were attempting to migrate our Struts2-Core from version 
> 2.5.26 to 2.5.30 to bring in the security improvements to OGNL double eval. 
> It was after this that we noticed a strange Freemarker error appearing that 
> did not previously. After doing some checks, we've isolated the exact version 
> that breaks for us. Struts 2.5.29 is working, but with the migration to 
> 2.5.30 we get the following error appearing for the checkbox.ftl template 
> file: 
> {code:java}
> ERROR - 2022-04-20 13:28:32,366 [qtp1459672753-1897  ] freemarker.runtime - 
> Error executing FreeMarker template
> FreeMarker template error:
> For "&&" right-hand operand: Expected a boolean, but this has evaluated to a 
> string+extended_hash (String wrapped into f.e.b.StringModel):
> ==> parameters.nameValue  [in template "template/simple/checkbox.ftl" at line 
> 22, column 32]
> ----
> FTL stack trace ("~" means nesting-related):
>         - Failed at: #if parameters.nameValue?? && paramet...  [in template 
> "template/simple/checkbox.ftl" at line 22, column 1]
> ----
> Java stack trace (for programmers):
> ----
> freemarker.core.NonBooleanException: [... Exception message was already 
> printed; see it above ...]
>         at freemarker.core.Expression.modelToBoolean(Expression.java:179)
>         at freemarker.core.Expression.evalToBoolean(Expression.java:162)
>         at freemarker.core.Expression.evalToBoolean(Expression.java:147)
>         at freemarker.core.AndExpression.evalToBoolean(AndExpression.java:36)
>         at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:48)
>         at freemarker.core.Environment.visit(Environment.java:330)
>         at freemarker.core.Environment.visit(Environment.java:336)
>         at freemarker.core.Environment.process(Environment.java:309)
>         at freemarker.template.Template.process(Template.java:384)
>         at 
> org.apache.struts2.components.template.FreemarkerTemplateEngine.renderTemplate(FreemarkerTemplateEngine.java:154)
>         at org.apache.struts2.components.UIBean.mergeTemplate(UIBean.java:580)
>         at org.apache.struts2.components.UIBean.end(UIBean.java:539)
>         at 
> org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:39)
>         at 
> org.apache.jsp.setup.services.service_005fparameter_jsp._jspx_meth_s_005fcheckbox_005f4(service_005fparameter_jsp.java:5843)
>         at 
> org.apache.jsp.setup.services.service_005fparameter_jsp._jspx_meth_s_005fif_005f20(service_005fparameter_jsp.java:5784)
>         at 
> org.apache.jsp.setup.services.service_005fparameter_jsp._jspx_meth_s_005felse_005f4(service_005fparameter_jsp.java:5737)
>         at 
> org.apache.jsp.setup.services.service_005fparameter_jsp._jspx_meth_s_005fif_005f18(service_005fparameter_jsp.java:5598)
>         at 
> org.apache.jsp.setup.services.service_005fparameter_jsp._jspx_meth_s_005fif_005f3(service_005fparameter_jsp.java:1115)
>         at 
> org.apache.jsp.setup.services.service_005fparameter_jsp._jspx_meth_s_005fiterator_005f0(service_005fparameter_jsp.java:930)
>         at 
> org.apache.jsp.setup.services.service_005fparameter_jsp._jspService(service_005fparameter_jsp.java:235)
>         at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
>         at 
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:465)
>         at 
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:383)
>         at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:331)
>         at 
> org.eclipse.jetty.jsp.JettyJspServlet.service(JettyJspServlet.java:106)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
>         at 
> org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1459)
>         at 
> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)
>         at 
> org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1631)
>         at 
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548)
>         at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
>         at 
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:618)
>         at 
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
>         at 
> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
>         at 
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624){code}
> The error seems trivial, but why is an upgrade between 2.5.29 and 2.5.30 
> causing this to appear for internal Struts2 template files? We noted that 
> more fixes for double eval were included in this release, but don't see why 
> that would be causing this error to appear. The error is easily reproducible 
> for us by switching back and forth between 2.5.29 and 2.5.30.
> After looking through some recent Struts fixes, we noticed the description of 
> *this Jira Item (WW-5163)* which has an error very similar to the one we are 
> getting now.
>  



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to