You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Ralph Grove <rf...@icloud.com.INVALID> on 2022/06/23 21:07:44 UTC
Problem with Struts 6.0 and Bootstrap plugin
I’m working on a Struts application that uses the Struts Bootstrap plugin. I upgraded it to Struts V6 by installing theses libs:
commons-fileupload-1.4.jar
commons-lang3-3.10.jar
freemarker-2.3.31.jar
log4j-api-2.17.2.jar
ognl-3.3.2.jar
struts2-core-6.0.0.jar
commons-text-1.8.jar
log4j-1.2-api-2.17.0.jar
log4j-core-2.17.0.jar
struts2-bootstrap-plugin-4.0.1.jar
The application now serves static content with no problem, but whenever a form that uses bootstrap is accessed, this error message results:
[ERROR] 2022-06-23 16:52:19 [https-jsse-nio-8443-exec-70] runtime - Error executing FreeMarker template
freemarker.core._MiscTemplateException: Template inclusion failed (for parameter value "/template/~~~bootstrap/controlheader-core.ftl"):
Syntax error in template "template/~~~bootstrap/controlheader-core.ftl" in line 51, column 44:
Using ?html (legacy escaping) is not allowed when auto-escaping is on with a markup output format (HTML), to avoid double-escaping mistakes.
(Stack trace follows below).
Here’s the source code for a test page that I put up to demonstrate the problem:
<%@page contentType="text/html" pageEncoding="UTF-8" errorPage="error.jsp" %>
<%@page import="org.personalitypad.utility.Config" %>
<%@page import="org.personalitypad.utility.JspLogger" %>
<%@page import="org.apache.log4j.Logger" %>
<%@taglib prefix="s" uri="/struts-tags" %>
<%@taglib prefix="sj" uri="/struts-jquery-tags" %>
<%@taglib prefix="sb" uri="/struts-bootstrap-tags" %>
<!-- jsp:include page="../include/check_login.jsp"/ -->
<!-- jsp:include page="../include/check_project_admin.jsp"/ -->
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Personality Pad | Test</title>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<jsp:include page="../include/analytics.html"/>
<!-- Struts2 includes -->
<s:head />
<sj:head />
<sb:head includeScripts="true" />
<link rel="stylesheet" href="css/2col.css" />
</head>
<body>
<div id="container">
<jsp:include page="../include/header.html"/>
<jsp:include page="../include/sidebar.jsp"/>
<div id="content">
<s:actionerror theme="bootstrap"/>
<s:actionmessage theme="bootstrap"/>
<h1>Test</h1>
<s:form action="Test" theme="bootstrap" cssClass="form-vertical">
<s:textfield
label="Email Address"
name="userId"
size="50"
maxlength="50"
tooltip="Enter the email address with which you registered." />
<s:password
label="Password"
name="password" />
<s:submit value="Sign In" class="btn btn-outline-primary"/>
</s:form>
</div>
<jsp:include page="../include/footer.html"/>
</div>
</body>
</html>
I would appreciate any suggestions for how to fix this.
Thanks,
Ralph Grove
FTL stack trace ("~" means nesting-related):
- Failed at: #include "/${parameters.templateDir}/... [in template "template/~~~bootstrap/controlheader.ftl" at line 21, column 1]
- Reached through: #include "/${parameters.templateDir}/... [in template "template/bootstrap/text.ftl" at line 21, column 1]
----
at freemarker.core.Include.accept(Include.java:164) ~[freemarker-2.3.31.jar:2.3.31]
at freemarker.core.Environment.visit(Environment.java:347) ~[freemarker-2.3.31.jar:2.3.31]
at freemarker.core.Environment.visit(Environment.java:353) ~[freemarker-2.3.31.jar:2.3.31]
at freemarker.core.Environment.include(Environment.java:2955) ~[freemarker-2.3.31.jar:2.3.31]
at freemarker.core.Include.accept(Include.java:171) ~[freemarker-2.3.31.jar:2.3.31]
at freemarker.core.Environment.visit(Environment.java:347) ~[freemarker-2.3.31.jar:2.3.31]
at freemarker.core.Environment.visit(Environment.java:353) ~[freemarker-2.3.31.jar:2.3.31]
at freemarker.core.Environment.process(Environment.java:326) ~[freemarker-2.3.31.jar:2.3.31]
at freemarker.template.Template.process(Template.java:383) ~[freemarker-2.3.31.jar:2.3.31]
at org.apache.struts2.components.template.FreemarkerTemplateEngine.renderTemplate(FreemarkerTemplateEngine.java:154) ~[struts2-core-6.0.0.jar:6.0.0]
at org.apache.struts2.components.UIBean.mergeTemplate(UIBean.java:588) ~[struts2-core-6.0.0.jar:6.0.0]
at org.apache.struts2.components.UIBean.end(UIBean.java:547) ~[struts2-core-6.0.0.jar:6.0.0]
at org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:40) ~[struts2-core-6.0.0.jar:6.0.0]
at org.apache.jsp.WEB_002dINF.jsp.test_jsp._jspx_meth_s_005ftextfield_005f0(test_jsp.java:452) ~[?:?]
at org.apache.jsp.WEB_002dINF.jsp.test_jsp._jspx_meth_s_005fform_005f0(test_jsp.java:397) ~[?:?]
at org.apache.jsp.WEB_002dINF.jsp.test_jsp._jspService(test_jsp.java:224) ~[?:?]
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71) ~[jasper.jar:9.0.43]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) ~[servlet-api.jar:4.0.FR]
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:467) ~[jasper.jar:9.0.43]
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:378) ~[jasper.jar:9.0.43]
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:326) ~[jasper.jar:9.0.43]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) ~[servlet-api.jar:4.0.FR]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[catalina.jar:9.0.43]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[catalina.jar:9.0.43]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-websocket.jar:9.0.43]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[catalina.jar:9.0.43]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[catalina.jar:9.0.43]
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:710) ~[catalina.jar:9.0.43]
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:457) ~[catalina.jar:9.0.43]
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:384) ~[catalina.jar:9.0.43]
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312) ~[catalina.jar:9.0.43]
at org.apache.struts2.result.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:169) ~[struts2-core-6.0.0.jar:6.0.0]
at org.apache.struts2.result.StrutsResultSupport.execute(StrutsResultSupport.java:206) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:363) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:280) ~[struts2-core-6.0.0.jar:6.0.0]
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:179) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263) ~[struts2-core-6.0.0.jar:6.0.0]
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:49) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
at org.apache.struts2.interceptor.FetchMetadataInterceptor.intercept(FetchMetadataInterceptor.java:76) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
at org.apache.struts2.interceptor.CoopInterceptor.intercept(CoopInterceptor.java:57) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
at org.apache.struts2.interceptor.CoepInterceptor.intercept(CoepInterceptor.java:56) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.doIntercept(ConversionErrorInterceptor.java:143) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:146) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:146) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:202) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:67) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
at org.apache.struts2.interceptor.DateTextFieldInterceptor.intercept(DateTextFieldInterceptor.java:133) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:89) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:242) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:101) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:142) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:161) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:175) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
at org.apache.struts2.interceptor.csp.CspInterceptor.intercept(CspInterceptor.java:44) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
at org.apache.struts2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:140) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:209) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:229) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:196) ~[struts2-core-6.0.0.jar:6.0.0]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
at org.apache.struts2.factory.StrutsActionProxy.execute(StrutsActionProxy.java:48) ~[struts2-core-6.0.0.jar:6.0.0]
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:637) ~[struts2-core-6.0.0.jar:6.0.0]
at org.apache.struts2.dispatcher.ExecuteOperations.executeAction(ExecuteOperations.java:79) ~[struts2-core-6.0.0.jar:6.0.0]
at org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:140) ~[struts2-core-6.0.0.jar:6.0.0]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[catalina.jar:9.0.43]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[catalina.jar:9.0.43]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[catalina.jar:9.0.43]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[catalina.jar:9.0.43]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:667) ~[catalina.jar:9.0.43]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) ~[catalina.jar:9.0.43]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[catalina.jar:9.0.43]
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687) ~[catalina.jar:9.0.43]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[catalina.jar:9.0.43]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346) ~[catalina.jar:9.0.43]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374) ~[tomcat-coyote.jar:9.0.43]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-coyote.jar:9.0.43]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:887) ~[tomcat-coyote.jar:9.0.43]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1684) ~[tomcat-coyote.jar:9.0.43]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-coyote.jar:9.0.43]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-util.jar:9.0.43]
at java.lang.Thread.run(Thread.java:835) ~[?:?]
Caused by: freemarker.core.ParseException: Syntax error in template "template/~~~bootstrap/controlheader-core.ftl" in line 51, column 44:
Using ?html (legacy escaping) is not allowed when auto-escaping is on with a markup output format (HTML), to avoid double-escaping mistakes.
at freemarker.core.FMParser.BuiltIn(FMParser.java:1225) ~[freemarker-2.3.31.jar:2.3.31]
at freemarker.core.FMParser.PrimaryExpression(FMParser.java:595) ~[freemarker-2.3.31.jar:2.3.31]
at freemarker.core.FMParser.UnaryExpression(FMParser.java:707) ~[freemarker-2.3.31.jar:2.3.31]
at freemarker.core.FMParser.MultiplicativeExpression(FMParser.java:822) ~[freemarker-2.3.31.jar:2.3.31]
at freemarker.core.FMParser.AdditiveExpression(FMParser.java:774) ~[freemarker-2.3.31.jar:2.3.31]
at freemarker.core.FMParser.RangeExpression(FMParser.java:950) ~[freemarker-2.3.31.jar:2.3.31]
at freemarker.core.FMParser.RelationalExpression(FMParser.java:902) ~[freemarker-2.3.31.jar:2.3.31]
at freemarker.core.FMParser.EqualityExpression(FMParser.java:865) ~[freemarker-2.3.31.jar:2.3.31]
at freemarker.core.FMParser.AndExpression(FMParser.java:1017) ~[freemarker-2.3.31.jar:2.3.31]
at freemarker.core.FMParser.OrExpression(FMParser.java:1039) ~[freemarker-2.3.31.jar:2.3.31]
at freemarker.core.FMParser.Expression(FMParser.java:552) ~[freemarker-2.3.31.jar:2.3.31]
at freemarker.core.FMParser.StringOutput(FMParser.java:1674) ~[freemarker-2.3.31.jar:2.3.31]
at freemarker.core.FMParser.MixedContentElements(FMParser.java:3968) ~[freemarker-2.3.31.jar:2.3.31]
at freemarker.core.FMParser.UnifiedMacroTransform(FMParser.java:3009) ~[freemarker-2.3.31.jar:2.3.31]
at freemarker.core.FMParser.FreemarkerDirective(FMParser.java:3664) ~[freemarker-2.3.31.jar:2.3.31]
at freemarker.core.FMParser.MixedContentElements(FMParser.java:4019) ~[freemarker-2.3.31.jar:2.3.31]
at freemarker.core.FMParser.Root(FMParser.java:4665) ~[freemarker-2.3.31.jar:2.3.31]
at freemarker.template.Template.<init>(Template.java:252) ~[freemarker-2.3.31.jar:2.3.31]
at freemarker.cache.TemplateCache.loadTemplate(TemplateCache.java:548) ~[freemarker-2.3.31.jar:2.3.31]
at freemarker.cache.TemplateCache.getTemplateInternal(TemplateCache.java:439) ~[freemarker-2.3.31.jar:2.3.31]
at freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:292) ~[freemarker-2.3.31.jar:2.3.31]
at freemarker.template.Configuration.getTemplate(Configuration.java:2836) ~[freemarker-2.3.31.jar:2.3.31]
at freemarker.core.Environment.getTemplateForInclusion(Environment.java:2913) ~[freemarker-2.3.31.jar:2.3.31]
at freemarker.core.Include.accept(Include.java:162) ~[freemarker-2.3.31.jar:2.3.31]
... 110 more
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org
Re: Problem with Struts 6.0 and Bootstrap plugin
Posted by Yasser Zamani <ya...@apache.org>.
I think you should keep the global 'output_format' unset.
Regards.
On 2022/06/23 21:07:44 Ralph Grove wrote:
> I’m working on a Struts application that uses the Struts Bootstrap plugin. I upgraded it to Struts V6 by installing theses libs:
>
> commons-fileupload-1.4.jar
> commons-lang3-3.10.jar
> freemarker-2.3.31.jar
> log4j-api-2.17.2.jar
> ognl-3.3.2.jar
> struts2-core-6.0.0.jar
>
> commons-text-1.8.jar
> log4j-1.2-api-2.17.0.jar
> log4j-core-2.17.0.jar
>
> struts2-bootstrap-plugin-4.0.1.jar
>
>
> The application now serves static content with no problem, but whenever a form that uses bootstrap is accessed, this error message results:
>
> [ERROR] 2022-06-23 16:52:19 [https-jsse-nio-8443-exec-70] runtime - Error executing FreeMarker template
> freemarker.core._MiscTemplateException: Template inclusion failed (for parameter value "/template/~~~bootstrap/controlheader-core.ftl"):
> Syntax error in template "template/~~~bootstrap/controlheader-core.ftl" in line 51, column 44:
> Using ?html (legacy escaping) is not allowed when auto-escaping is on with a markup output format (HTML), to avoid double-escaping mistakes.
>
> (Stack trace follows below).
>
>
> Here’s the source code for a test page that I put up to demonstrate the problem:
>
> <%@page contentType="text/html" pageEncoding="UTF-8" errorPage="error.jsp" %>
> <%@page import="org.personalitypad.utility.Config" %>
> <%@page import="org.personalitypad.utility.JspLogger" %>
> <%@page import="org.apache.log4j.Logger" %>
>
> <%@taglib prefix="s" uri="/struts-tags" %>
> <%@taglib prefix="sj" uri="/struts-jquery-tags" %>
> <%@taglib prefix="sb" uri="/struts-bootstrap-tags" %>
>
> <!-- jsp:include page="../include/check_login.jsp"/ -->
> <!-- jsp:include page="../include/check_project_admin.jsp"/ -->
>
> <!DOCTYPE html>
>
> <html xmlns="http://www.w3.org/1999/xhtml">
> <head>
> <title>Personality Pad | Test</title>
> <meta charset="utf-8"/>
> <meta name="viewport" content="width=device-width, initial-scale=1"/>
>
> <jsp:include page="../include/analytics.html"/>
>
> <!-- Struts2 includes -->
> <s:head />
> <sj:head />
> <sb:head includeScripts="true" />
>
> <link rel="stylesheet" href="css/2col.css" />
> </head>
>
> <body>
> <div id="container">
>
> <jsp:include page="../include/header.html"/>
> <jsp:include page="../include/sidebar.jsp"/>
>
> <div id="content">
> <s:actionerror theme="bootstrap"/>
> <s:actionmessage theme="bootstrap"/>
>
> <h1>Test</h1>
>
> <s:form action="Test" theme="bootstrap" cssClass="form-vertical">
>
> <s:textfield
> label="Email Address"
> name="userId"
> size="50"
> maxlength="50"
> tooltip="Enter the email address with which you registered." />
>
> <s:password
> label="Password"
> name="password" />
>
> <s:submit value="Sign In" class="btn btn-outline-primary"/>
>
> </s:form>
>
> </div>
>
> <jsp:include page="../include/footer.html"/>
>
> </div>
> </body>
> </html>
>
>
>
>
> I would appreciate any suggestions for how to fix this.
>
> Thanks,
> Ralph Grove
>
>
>
> FTL stack trace ("~" means nesting-related):
> - Failed at: #include "/${parameters.templateDir}/... [in template "template/~~~bootstrap/controlheader.ftl" at line 21, column 1]
> - Reached through: #include "/${parameters.templateDir}/... [in template "template/bootstrap/text.ftl" at line 21, column 1]
> ----
> at freemarker.core.Include.accept(Include.java:164) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.Environment.visit(Environment.java:347) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.Environment.visit(Environment.java:353) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.Environment.include(Environment.java:2955) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.Include.accept(Include.java:171) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.Environment.visit(Environment.java:347) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.Environment.visit(Environment.java:353) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.Environment.process(Environment.java:326) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.template.Template.process(Template.java:383) ~[freemarker-2.3.31.jar:2.3.31]
> at org.apache.struts2.components.template.FreemarkerTemplateEngine.renderTemplate(FreemarkerTemplateEngine.java:154) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.components.UIBean.mergeTemplate(UIBean.java:588) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.components.UIBean.end(UIBean.java:547) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:40) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.jsp.WEB_002dINF.jsp.test_jsp._jspx_meth_s_005ftextfield_005f0(test_jsp.java:452) ~[?:?]
> at org.apache.jsp.WEB_002dINF.jsp.test_jsp._jspx_meth_s_005fform_005f0(test_jsp.java:397) ~[?:?]
> at org.apache.jsp.WEB_002dINF.jsp.test_jsp._jspService(test_jsp.java:224) ~[?:?]
> at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71) ~[jasper.jar:9.0.43]
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) ~[servlet-api.jar:4.0.FR]
> at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:467) ~[jasper.jar:9.0.43]
> at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:378) ~[jasper.jar:9.0.43]
> at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:326) ~[jasper.jar:9.0.43]
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) ~[servlet-api.jar:4.0.FR]
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[catalina.jar:9.0.43]
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[catalina.jar:9.0.43]
> at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-websocket.jar:9.0.43]
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[catalina.jar:9.0.43]
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[catalina.jar:9.0.43]
> at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:710) ~[catalina.jar:9.0.43]
> at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:457) ~[catalina.jar:9.0.43]
> at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:384) ~[catalina.jar:9.0.43]
> at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312) ~[catalina.jar:9.0.43]
> at org.apache.struts2.result.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:169) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.result.StrutsResultSupport.execute(StrutsResultSupport.java:206) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:363) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:280) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:179) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:49) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.interceptor.FetchMetadataInterceptor.intercept(FetchMetadataInterceptor.java:76) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.interceptor.CoopInterceptor.intercept(CoopInterceptor.java:57) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.interceptor.CoepInterceptor.intercept(CoepInterceptor.java:56) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.doIntercept(ConversionErrorInterceptor.java:143) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:146) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:146) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:202) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:67) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.interceptor.DateTextFieldInterceptor.intercept(DateTextFieldInterceptor.java:133) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:89) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:242) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:101) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:142) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:161) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:175) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.interceptor.csp.CspInterceptor.intercept(CspInterceptor.java:44) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:140) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:209) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:229) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:196) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.factory.StrutsActionProxy.execute(StrutsActionProxy.java:48) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:637) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.dispatcher.ExecuteOperations.executeAction(ExecuteOperations.java:79) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:140) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[catalina.jar:9.0.43]
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[catalina.jar:9.0.43]
> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[catalina.jar:9.0.43]
> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[catalina.jar:9.0.43]
> at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:667) ~[catalina.jar:9.0.43]
> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) ~[catalina.jar:9.0.43]
> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[catalina.jar:9.0.43]
> at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687) ~[catalina.jar:9.0.43]
> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[catalina.jar:9.0.43]
> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346) ~[catalina.jar:9.0.43]
> at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374) ~[tomcat-coyote.jar:9.0.43]
> at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-coyote.jar:9.0.43]
> at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:887) ~[tomcat-coyote.jar:9.0.43]
> at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1684) ~[tomcat-coyote.jar:9.0.43]
> at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-coyote.jar:9.0.43]
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
> at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-util.jar:9.0.43]
> at java.lang.Thread.run(Thread.java:835) ~[?:?]
> Caused by: freemarker.core.ParseException: Syntax error in template "template/~~~bootstrap/controlheader-core.ftl" in line 51, column 44:
> Using ?html (legacy escaping) is not allowed when auto-escaping is on with a markup output format (HTML), to avoid double-escaping mistakes.
> at freemarker.core.FMParser.BuiltIn(FMParser.java:1225) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.FMParser.PrimaryExpression(FMParser.java:595) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.FMParser.UnaryExpression(FMParser.java:707) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.FMParser.MultiplicativeExpression(FMParser.java:822) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.FMParser.AdditiveExpression(FMParser.java:774) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.FMParser.RangeExpression(FMParser.java:950) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.FMParser.RelationalExpression(FMParser.java:902) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.FMParser.EqualityExpression(FMParser.java:865) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.FMParser.AndExpression(FMParser.java:1017) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.FMParser.OrExpression(FMParser.java:1039) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.FMParser.Expression(FMParser.java:552) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.FMParser.StringOutput(FMParser.java:1674) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.FMParser.MixedContentElements(FMParser.java:3968) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.FMParser.UnifiedMacroTransform(FMParser.java:3009) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.FMParser.FreemarkerDirective(FMParser.java:3664) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.FMParser.MixedContentElements(FMParser.java:4019) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.FMParser.Root(FMParser.java:4665) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.template.Template.<init>(Template.java:252) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.cache.TemplateCache.loadTemplate(TemplateCache.java:548) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.cache.TemplateCache.getTemplateInternal(TemplateCache.java:439) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:292) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.template.Configuration.getTemplate(Configuration.java:2836) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.Environment.getTemplateForInclusion(Environment.java:2913) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.Include.accept(Include.java:162) ~[freemarker-2.3.31.jar:2.3.31]
> ... 110 more
>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org
Re: Problem with Struts 6.0 and Bootstrap plugin
Posted by Ralph Grove <rf...@icloud.com.INVALID>.
I see that the issue has already been raised there, so I’ll watch for developments.
Thanks for your help.
Ralph
> On Jun 24, 2022, at 4:53 PM, Lukasz Lenart <lu...@apache.org> wrote:
>
> The plugin must be adjusted to Struts 6.0.0 - I would register an
> issue at Github to address this problem. After fixing the JQuery
> plugin we will try to focus on that.
> Please be aware that this plugin isn't directly maintained by ASF and
> Struts' volunteers.
>
>
> Cheers
> Łukasz
>
> czw., 23 cze 2022 o 23:08 Ralph Grove <rfgrove@icloud.com.invalid <ma...@icloud.com.invalid>> napisał(a):
>>
>> I’m working on a Struts application that uses the Struts Bootstrap plugin. I upgraded it to Struts V6 by installing theses libs:
>>
>> commons-fileupload-1.4.jar
>> commons-lang3-3.10.jar
>> freemarker-2.3.31.jar
>> log4j-api-2.17.2.jar
>> ognl-3.3.2.jar
>> struts2-core-6.0.0.jar
>>
>> commons-text-1.8.jar
>> log4j-1.2-api-2.17.0.jar
>> log4j-core-2.17.0.jar
>>
>> struts2-bootstrap-plugin-4.0.1.jar
>>
>>
>> The application now serves static content with no problem, but whenever a form that uses bootstrap is accessed, this error message results:
>>
>> [ERROR] 2022-06-23 16:52:19 [https-jsse-nio-8443-exec-70] runtime - Error executing FreeMarker template
>> freemarker.core._MiscTemplateException: Template inclusion failed (for parameter value "/template/~~~bootstrap/controlheader-core.ftl"):
>> Syntax error in template "template/~~~bootstrap/controlheader-core.ftl" in line 51, column 44:
>> Using ?html (legacy escaping) is not allowed when auto-escaping is on with a markup output format (HTML), to avoid double-escaping mistakes.
>>
>> (Stack trace follows below).
Re: Problem with Struts 6.0 and Bootstrap plugin
Posted by Lukasz Lenart <lu...@apache.org>.
The plugin must be adjusted to Struts 6.0.0 - I would register an
issue at Github to address this problem. After fixing the JQuery
plugin we will try to focus on that.
Please be aware that this plugin isn't directly maintained by ASF and
Struts' volunteers.
Cheers
Łukasz
czw., 23 cze 2022 o 23:08 Ralph Grove <rf...@icloud.com.invalid> napisał(a):
>
> I’m working on a Struts application that uses the Struts Bootstrap plugin. I upgraded it to Struts V6 by installing theses libs:
>
> commons-fileupload-1.4.jar
> commons-lang3-3.10.jar
> freemarker-2.3.31.jar
> log4j-api-2.17.2.jar
> ognl-3.3.2.jar
> struts2-core-6.0.0.jar
>
> commons-text-1.8.jar
> log4j-1.2-api-2.17.0.jar
> log4j-core-2.17.0.jar
>
> struts2-bootstrap-plugin-4.0.1.jar
>
>
> The application now serves static content with no problem, but whenever a form that uses bootstrap is accessed, this error message results:
>
> [ERROR] 2022-06-23 16:52:19 [https-jsse-nio-8443-exec-70] runtime - Error executing FreeMarker template
> freemarker.core._MiscTemplateException: Template inclusion failed (for parameter value "/template/~~~bootstrap/controlheader-core.ftl"):
> Syntax error in template "template/~~~bootstrap/controlheader-core.ftl" in line 51, column 44:
> Using ?html (legacy escaping) is not allowed when auto-escaping is on with a markup output format (HTML), to avoid double-escaping mistakes.
>
> (Stack trace follows below).
>
>
> Here’s the source code for a test page that I put up to demonstrate the problem:
>
> <%@page contentType="text/html" pageEncoding="UTF-8" errorPage="error.jsp" %>
> <%@page import="org.personalitypad.utility.Config" %>
> <%@page import="org.personalitypad.utility.JspLogger" %>
> <%@page import="org.apache.log4j.Logger" %>
>
> <%@taglib prefix="s" uri="/struts-tags" %>
> <%@taglib prefix="sj" uri="/struts-jquery-tags" %>
> <%@taglib prefix="sb" uri="/struts-bootstrap-tags" %>
>
> <!-- jsp:include page="../include/check_login.jsp"/ -->
> <!-- jsp:include page="../include/check_project_admin.jsp"/ -->
>
> <!DOCTYPE html>
>
> <html xmlns="http://www.w3.org/1999/xhtml">
> <head>
> <title>Personality Pad | Test</title>
> <meta charset="utf-8"/>
> <meta name="viewport" content="width=device-width, initial-scale=1"/>
>
> <jsp:include page="../include/analytics.html"/>
>
> <!-- Struts2 includes -->
> <s:head />
> <sj:head />
> <sb:head includeScripts="true" />
>
> <link rel="stylesheet" href="css/2col.css" />
> </head>
>
> <body>
> <div id="container">
>
> <jsp:include page="../include/header.html"/>
> <jsp:include page="../include/sidebar.jsp"/>
>
> <div id="content">
> <s:actionerror theme="bootstrap"/>
> <s:actionmessage theme="bootstrap"/>
>
> <h1>Test</h1>
>
> <s:form action="Test" theme="bootstrap" cssClass="form-vertical">
>
> <s:textfield
> label="Email Address"
> name="userId"
> size="50"
> maxlength="50"
> tooltip="Enter the email address with which you registered." />
>
> <s:password
> label="Password"
> name="password" />
>
> <s:submit value="Sign In" class="btn btn-outline-primary"/>
>
> </s:form>
>
> </div>
>
> <jsp:include page="../include/footer.html"/>
>
> </div>
> </body>
> </html>
>
>
>
>
> I would appreciate any suggestions for how to fix this.
>
> Thanks,
> Ralph Grove
>
>
>
> FTL stack trace ("~" means nesting-related):
> - Failed at: #include "/${parameters.templateDir}/... [in template "template/~~~bootstrap/controlheader.ftl" at line 21, column 1]
> - Reached through: #include "/${parameters.templateDir}/... [in template "template/bootstrap/text.ftl" at line 21, column 1]
> ----
> at freemarker.core.Include.accept(Include.java:164) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.Environment.visit(Environment.java:347) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.Environment.visit(Environment.java:353) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.Environment.include(Environment.java:2955) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.Include.accept(Include.java:171) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.Environment.visit(Environment.java:347) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.Environment.visit(Environment.java:353) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.Environment.process(Environment.java:326) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.template.Template.process(Template.java:383) ~[freemarker-2.3.31.jar:2.3.31]
> at org.apache.struts2.components.template.FreemarkerTemplateEngine.renderTemplate(FreemarkerTemplateEngine.java:154) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.components.UIBean.mergeTemplate(UIBean.java:588) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.components.UIBean.end(UIBean.java:547) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:40) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.jsp.WEB_002dINF.jsp.test_jsp._jspx_meth_s_005ftextfield_005f0(test_jsp.java:452) ~[?:?]
> at org.apache.jsp.WEB_002dINF.jsp.test_jsp._jspx_meth_s_005fform_005f0(test_jsp.java:397) ~[?:?]
> at org.apache.jsp.WEB_002dINF.jsp.test_jsp._jspService(test_jsp.java:224) ~[?:?]
> at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71) ~[jasper.jar:9.0.43]
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) ~[servlet-api.jar:4.0.FR]
> at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:467) ~[jasper.jar:9.0.43]
> at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:378) ~[jasper.jar:9.0.43]
> at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:326) ~[jasper.jar:9.0.43]
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) ~[servlet-api.jar:4.0.FR]
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[catalina.jar:9.0.43]
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[catalina.jar:9.0.43]
> at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-websocket.jar:9.0.43]
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[catalina.jar:9.0.43]
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[catalina.jar:9.0.43]
> at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:710) ~[catalina.jar:9.0.43]
> at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:457) ~[catalina.jar:9.0.43]
> at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:384) ~[catalina.jar:9.0.43]
> at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312) ~[catalina.jar:9.0.43]
> at org.apache.struts2.result.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:169) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.result.StrutsResultSupport.execute(StrutsResultSupport.java:206) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:363) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:280) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:179) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:49) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.interceptor.FetchMetadataInterceptor.intercept(FetchMetadataInterceptor.java:76) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.interceptor.CoopInterceptor.intercept(CoopInterceptor.java:57) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.interceptor.CoepInterceptor.intercept(CoepInterceptor.java:56) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.doIntercept(ConversionErrorInterceptor.java:143) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:146) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:146) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:202) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:67) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.interceptor.DateTextFieldInterceptor.intercept(DateTextFieldInterceptor.java:133) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:89) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:242) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:101) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:142) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:161) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:175) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.interceptor.csp.CspInterceptor.intercept(CspInterceptor.java:44) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:140) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:209) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:229) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:196) ~[struts2-core-6.0.0.jar:6.0.0]
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.factory.StrutsActionProxy.execute(StrutsActionProxy.java:48) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:637) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.dispatcher.ExecuteOperations.executeAction(ExecuteOperations.java:79) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:140) ~[struts2-core-6.0.0.jar:6.0.0]
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[catalina.jar:9.0.43]
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[catalina.jar:9.0.43]
> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[catalina.jar:9.0.43]
> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[catalina.jar:9.0.43]
> at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:667) ~[catalina.jar:9.0.43]
> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) ~[catalina.jar:9.0.43]
> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[catalina.jar:9.0.43]
> at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687) ~[catalina.jar:9.0.43]
> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[catalina.jar:9.0.43]
> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346) ~[catalina.jar:9.0.43]
> at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374) ~[tomcat-coyote.jar:9.0.43]
> at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-coyote.jar:9.0.43]
> at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:887) ~[tomcat-coyote.jar:9.0.43]
> at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1684) ~[tomcat-coyote.jar:9.0.43]
> at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-coyote.jar:9.0.43]
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
> at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-util.jar:9.0.43]
> at java.lang.Thread.run(Thread.java:835) ~[?:?]
> Caused by: freemarker.core.ParseException: Syntax error in template "template/~~~bootstrap/controlheader-core.ftl" in line 51, column 44:
> Using ?html (legacy escaping) is not allowed when auto-escaping is on with a markup output format (HTML), to avoid double-escaping mistakes.
> at freemarker.core.FMParser.BuiltIn(FMParser.java:1225) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.FMParser.PrimaryExpression(FMParser.java:595) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.FMParser.UnaryExpression(FMParser.java:707) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.FMParser.MultiplicativeExpression(FMParser.java:822) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.FMParser.AdditiveExpression(FMParser.java:774) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.FMParser.RangeExpression(FMParser.java:950) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.FMParser.RelationalExpression(FMParser.java:902) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.FMParser.EqualityExpression(FMParser.java:865) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.FMParser.AndExpression(FMParser.java:1017) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.FMParser.OrExpression(FMParser.java:1039) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.FMParser.Expression(FMParser.java:552) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.FMParser.StringOutput(FMParser.java:1674) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.FMParser.MixedContentElements(FMParser.java:3968) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.FMParser.UnifiedMacroTransform(FMParser.java:3009) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.FMParser.FreemarkerDirective(FMParser.java:3664) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.FMParser.MixedContentElements(FMParser.java:4019) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.FMParser.Root(FMParser.java:4665) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.template.Template.<init>(Template.java:252) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.cache.TemplateCache.loadTemplate(TemplateCache.java:548) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.cache.TemplateCache.getTemplateInternal(TemplateCache.java:439) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:292) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.template.Configuration.getTemplate(Configuration.java:2836) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.Environment.getTemplateForInclusion(Environment.java:2913) ~[freemarker-2.3.31.jar:2.3.31]
> at freemarker.core.Include.accept(Include.java:162) ~[freemarker-2.3.31.jar:2.3.31]
> ... 110 more
>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org