• FreeMarker template error!


    部署项目后发现以下“FreeMarker template error!”的问题,google、baidu猛一顿搜索无果后开始认真分析异常信息。

    FreeMarker template error!
    Error on line 72, column 6 in template/ajax/head.ftl
    Expecting a boolean (true/false) expression here
    Expression parameters.debug?default(false) does not evaluate to true/false 
    it is an instance of freemarker.ext.beans.StringModel
    The problematic instruction:
    ----------
    ==> if parameters.debug?default(false) [on line 72, column 1 in template/ajax/head.ftl]
    ----------
    
    Java backtrace for programmers:
    ----------
    freemarker.core.NonBooleanException: Error on line 72, column 6 in template/ajax/head.ftl
    Expecting a boolean (true/false) expression here
    Expression parameters.debug?default(false) does not evaluate to true/false 
    it is an instance of freemarker.ext.beans.StringModel
    	at freemarker.core.Expression.isTrue(Expression.java:150)
    	at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:77)
    	at freemarker.core.Environment.visit(Environment.java:196)
    	at freemarker.core.MixedContent.accept(MixedContent.java:92)
    	at freemarker.core.Environment.visit(Environment.java:196)
    	at freemarker.core.Environment.process(Environment.java:176)
    	at freemarker.template.Template.process(Template.java:232)
    	at org.apache.struts2.components.template.FreemarkerTemplateEngine.renderTemplate(FreemarkerTemplateEngine.java:168)
    	at org.apache.struts2.components.UIBean.mergeTemplate(UIBean.java:530)
    	at org.apache.struts2.components.UIBean.end(UIBean.java:484)
    	at org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:43)
    	at org.apache.jsp.WebUI.UserCenter.modifyUserInfo_jsp._jspx_meth_sd_005fhead_005f0(modifyUserInfo_jsp.java:389)
    	at org.apache.jsp.WebUI.UserCenter.modifyUserInfo_jsp._jspService(modifyUserInfo_jsp.java:99)
    	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:99)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:416)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
    	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
    	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    	at java.lang.Thread.run(Thread.java:722)
    

    一句异常都没有看懂,但是发现和项目有关的两条异常,如下:

          at org.apache.jsp.WebUI.UserCenter.modifyUserInfo_jsp._jspx_meth_sd_005fhead_005f0(modifyUserInfo_jsp.java:389)
    	at org.apache.jsp.WebUI.UserCenter.modifyUserInfo_jsp._jspService(modifyUserInfo_jsp.java:99)

    打开tomcat部署的modifyUserInfo_jsp.java文件,定位到99行。

     96       out.write("<!DOCTYPE html > ");
     97       out.write("<html> ");
     98       out.write("<head> ");
     99       if (_jspx_meth_sd_005fhead_005f0(_jspx_page_context))
    100         return;
    101       out.write(" ");
    102       out.write("<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> ");
    和源代码进行对比
     13 <!DOCTYPE html >
     14 <html>
     15 <head>
     16 <sd:head/>
     17 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    询问相关开发人员后,发现源代码16行为多余代码,删除后异常消除,没有再深入研究389行代码。

    总结:遇到不认识、没见过的异常信息,不用害怕,认真分析,或许就是一个简单的语法错误。

  • 相关阅读:
    Redis_数据类型
    python 单独设置在plot每条线的label为中文
    制作9patch图片心得——Android开发使用类似QQ聊天的冒泡对话框
    Oracle数据库实验一建立数据库
    Postman使用总结
    jmeter使用小结
    python实现系统调用cmd命令的模块---subprocess模块
    程序进程线程之间的区别
    Fiddler抓包工具简介
    MySQL基础SQL命令---增删改查
  • 原文地址:https://www.cnblogs.com/penzz/p/3245980.html
Copyright © 2020-2023  润新知