一,案例一

1.1、错误描述

 <html>
   <head>
     <meta http-equiv="content-type" content="text/html; charset=UTF-8">
     <title>freemarker基本数据类型</title>

   </head>

   <body>
           张三丰

      123,456

 Error on line 20, column 8 in type.ftl
 Expecting a string, date or number here, Expression flag is instead a freemarker.template.TemplateBooleanModel$2
 The problematic instruction:
 ----------
 ==> ${flag} [on line 20, column 6 in type.ftl]
 ----------

 Java backtrace for programmers:
 ----------
 freemarker.core.NonStringException: Error on line 20, column 8 in type.ftl
 Expecting a string, date or number here, Expression flag is instead a freemarker.template.TemplateBooleanModel$2
     at freemarker.core.Expression.getStringValue(Expression.java:126)
     at freemarker.core.Expression.getStringValue(Expression.java:93)
     at freemarker.core.DollarVariable.accept(DollarVariable.java:76)
     at freemarker.core.Environment.visit(Environment.java:221)
     at freemarker.core.MixedContent.accept(MixedContent.java:92)
     at freemarker.core.Environment.visit(Environment.java:221)
     at freemarker.core.Environment.process(Environment.java:199)
     at freemarker.template.Template.process(Template.java:259)
     at com.you.freemarker.FreemarkerTemplate.printFtl(FreemarkerTemplate.java:77)
     at com.you.test.freemarker.FreemarkerTest.studentPrint(FreemarkerTest.java:172)
     at com.you.test.freemarker.FreemarkerTest.testDataType(FreemarkerTest.java:159)
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
     at java.lang.reflect.Method.invoke(Unknown Source)
     at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
     at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
     at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
     at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
     at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
     at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
     at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
     at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
     at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
     at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
     at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
     at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
     at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
 五月 30, 2014 11:23:18 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error
 严重: Template processing error: "Error on line 20, column 8 in type.ftl\nExpecting a string, date or number here, Expression flag is instead a freemarker.template.TemplateBooleanModel$2"

 Error on line 20, column 8 in type.ftl
 Expecting a string, date or number here, Expression flag is instead a freemarker.template.TemplateBooleanModel$2
 The problematic instruction:
 ----------
 ==> ${flag} [on line 20, column 6 in type.ftl]
 ----------

 Java backtrace for programmers:
 ----------
 freemarker.core.NonStringException: Error on line 20, column 8 in type.ftl
 Expecting a string, date or number here, Expression flag is instead a freemarker.template.TemplateBooleanModel$2
     at freemarker.core.Expression.getStringValue(Expression.java:126)
     at freemarker.core.Expression.getStringValue(Expression.java:93)
     at freemarker.core.DollarVariable.accept(DollarVariable.java:76)
     at freemarker.core.Environment.visit(Environment.java:221)
     at freemarker.core.MixedContent.accept(MixedContent.java:92)
     at freemarker.core.Environment.visit(Environment.java:221)
     at freemarker.core.Environment.process(Environment.java:199)
     at freemarker.template.Template.process(Template.java:259)
     at com.you.freemarker.FreemarkerTemplate.printFtl(FreemarkerTemplate.java:77)
     at com.you.test.freemarker.FreemarkerTest.studentPrint(FreemarkerTest.java:172)
     at com.you.test.freemarker.FreemarkerTest.testDataType(FreemarkerTest.java:159)
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
     at java.lang.reflect.Method.invoke(Unknown Source)
     at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
     at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
     at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
     at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
     at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
     at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
     at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
     at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
     at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
     at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
     at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
     at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
     at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

 Error on line 20, column 8 in type.ftl
 Expecting a string, date or number here, Expression flag is instead a freemarker.template.TemplateBooleanModel$2
 The problematic instruction:
 ----------
 ==> ${flag} [on line 20, column 6 in type.ftl]
 ----------

 Java backtrace for programmers:
 ----------
 freemarker.core.NonStringException: Error on line 20, column 8 in type.ftl
 Expecting a string, date or number here, Expression flag is instead a freemarker.template.TemplateBooleanModel$2
     at freemarker.core.Expression.getStringValue(Expression.java:126)
     at freemarker.core.Expression.getStringValue(Expression.java:93)
     at freemarker.core.DollarVariable.accept(DollarVariable.java:76)
     at freemarker.core.Environment.visit(Environment.java:221)
     at freemarker.core.MixedContent.accept(MixedContent.java:92)
     at freemarker.core.Environment.visit(Environment.java:221)
     at freemarker.core.Environment.process(Environment.java:199)
     at freemarker.template.Template.process(Template.java:259)
     at com.you.freemarker.FreemarkerTemplate.printFtl(FreemarkerTemplate.java:77)
     at com.you.test.freemarker.FreemarkerTest.studentPrint(FreemarkerTest.java:172)
     at com.you.test.freemarker.FreemarkerTest.testDataType(FreemarkerTest.java:159)
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
     at java.lang.reflect.Method.invoke(Unknown Source)
     at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
     at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
     at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
     at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
     at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
     at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
     at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
     at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
     at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
     at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
     at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
     at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
     at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

1.2、错误原因

 <#--定义布尔值-->
 <#assign flag = true/>
 ${flag}

不能直接输出除了字符串和数字之外的类型,否则会报错

1.3、解决办法

将布尔类型转换为字符串输出,使用${XXX?string}转换

 <#--定义布尔值-->
 <#assign flag = true/>
 ${flag?string}

结果:true

二,案例二

2.1,错误描述

 <html>
   <head>
     <meta http-equiv="content-type" content="text/html; charset=UTF-8">
     <title>freemarker</title>

   </head>

   <body>

 Error on line 12, column 12 in list.ftl
 Expecting a string, date or number here, Expression num is instead a freemarker.core.NumericalRange
 The problematic instruction:
 ----------
 ==> ${num} [on line 12, column 10 in list.ftl]
 ----------

 Java backtrace for programmers:
 ----------
 freemarker.core.NonStringException: Error on line 12, column 12 in list.ftl
 Expecting a string, date or number here, Expression num is instead a freemarker.core.NumericalRange
     at freemarker.core.Expression.getStringValue(Expression.java:126)
     at freemarker.core.Expression.getStringValue(Expression.java:93)
     at freemarker.core.DollarVariable.accept(DollarVariable.java:76)
     at freemarker.core.Environment.visit(Environment.java:221)
     at freemarker.core.MixedContent.accept(MixedContent.java:92)
     at freemarker.core.Environment.visit(Environment.java:221)
     at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:179)
     at freemarker.core.Environment.visit(Environment.java:428)
     at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)
     at freemarker.core.Environment.visit(Environment.java:221)
     at freemarker.core.MixedContent.accept(MixedContent.java:92)
     at freemarker.core.Environment.visit(Environment.java:221)
     at freemarker.core.Environment.process(Environment.java:199)
     at freemarker.template.Template.process(Template.java:259)
     at com.you.freemarker.FreemarkerTemplate.printFtl(FreemarkerTemplate.java:77)
     at com.you.test.freemarker.FreemarkerTest.studentPrint(FreemarkerTest.java:203)
     at com.you.test.freemarker.FreemarkerTest.testList(FreemarkerTest.java:190)
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
     at java.lang.reflect.Method.invoke(Unknown Source)
     at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
     at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
     at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
     at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
     at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
     at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
     at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
     at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
     at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
     at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
     at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
     at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
     at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
 六月 03, 2014 10:30:40 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error
 严重: Template processing error: "Error on line 12, column 12 in list.ftl\nExpecting a string, date or number here, Expression num is instead a freemarker.core.NumericalRange"

 Error on line 12, column 12 in list.ftl
 Expecting a string, date or number here, Expression num is instead a freemarker.core.NumericalRange
 The problematic instruction:
 ----------
 ==> ${num} [on line 12, column 10 in list.ftl]
 ----------

 Java backtrace for programmers:
 ----------
 freemarker.core.NonStringException: Error on line 12, column 12 in list.ftl
 Expecting a string, date or number here, Expression num is instead a freemarker.core.NumericalRange
     at freemarker.core.Expression.getStringValue(Expression.java:126)
     at freemarker.core.Expression.getStringValue(Expression.java:93)
     at freemarker.core.DollarVariable.accept(DollarVariable.java:76)
     at freemarker.core.Environment.visit(Environment.java:221)
     at freemarker.core.MixedContent.accept(MixedContent.java:92)
     at freemarker.core.Environment.visit(Environment.java:221)
     at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:179)
     at freemarker.core.Environment.visit(Environment.java:428)
     at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)
     at freemarker.core.Environment.visit(Environment.java:221)
     at freemarker.core.MixedContent.accept(MixedContent.java:92)
     at freemarker.core.Environment.visit(Environment.java:221)
     at freemarker.core.Environment.process(Environment.java:199)
     at freemarker.template.Template.process(Template.java:259)
     at com.you.freemarker.FreemarkerTemplate.printFtl(FreemarkerTemplate.java:77)
     at com.you.test.freemarker.FreemarkerTest.studentPrint(FreemarkerTest.java:203)
     at com.you.test.freemarker.FreemarkerTest.testList(FreemarkerTest.java:190)
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
     at java.lang.reflect.Method.invoke(Unknown Source)
     at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
     at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
     at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
     at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
     at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
     at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
     at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
     at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
     at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
     at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
     at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
     at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
     at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

 Error on line 12, column 12 in list.ftl
 Expecting a string, date or number here, Expression num is instead a freemarker.core.NumericalRange
 The problematic instruction:
 ----------
 ==> ${num} [on line 12, column 10 in list.ftl]
 ----------

 Java backtrace for programmers:
 ----------
 freemarker.core.NonStringException: Error on line 12, column 12 in list.ftl
 Expecting a string, date or number here, Expression num is instead a freemarker.core.NumericalRange
     at freemarker.core.Expression.getStringValue(Expression.java:126)
     at freemarker.core.Expression.getStringValue(Expression.java:93)
     at freemarker.core.DollarVariable.accept(DollarVariable.java:76)
     at freemarker.core.Environment.visit(Environment.java:221)
     at freemarker.core.MixedContent.accept(MixedContent.java:92)
     at freemarker.core.Environment.visit(Environment.java:221)
     at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:179)
     at freemarker.core.Environment.visit(Environment.java:428)
     at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)
     at freemarker.core.Environment.visit(Environment.java:221)
     at freemarker.core.MixedContent.accept(MixedContent.java:92)
     at freemarker.core.Environment.visit(Environment.java:221)
     at freemarker.core.Environment.process(Environment.java:199)
     at freemarker.template.Template.process(Template.java:259)
     at com.you.freemarker.FreemarkerTemplate.printFtl(FreemarkerTemplate.java:77)
     at com.you.test.freemarker.FreemarkerTest.studentPrint(FreemarkerTest.java:203)
     at com.you.test.freemarker.FreemarkerTest.testList(FreemarkerTest.java:190)
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
     at java.lang.reflect.Method.invoke(Unknown Source)
     at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
     at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
     at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
     at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
     at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
     at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
     at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
     at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
     at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
     at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
     at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
     at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
     at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

2.2、错误原因

 <#--freemarker定义了一个连续的序列-->
      <#assign nums=[1..100]/>
      <#list nums as num>
          ${num}
      </#list>

2.3、解决办法

去掉中括号,这样定义连续的序列:nums=1..100

1、错误描述

[plain] view plain copy

 
  1. <html>
  2. <head>
  3. <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  4. <title>freemarker基本数据类型</title>
  5. </head>
  6. <body>
  7. 张三丰
  8. 123,456
  9. Error on line 20, column 8 in type.ftl
  10. Expecting a string, date or number here, Expression flag is instead a freemarker.template.TemplateBooleanModel$2
  11. The problematic instruction:
  12. ----------
  13. ==> ${flag} [on line 20, column 6 in type.ftl]
  14. ----------
  15. Java backtrace for programmers:
  16. ----------
  17. freemarker.core.NonStringException: Error on line 20, column 8 in type.ftl
  18. Expecting a string, date or number here, Expression flag is instead a freemarker.template.TemplateBooleanModel$2
  19. at freemarker.core.Expression.getStringValue(Expression.java:126)
  20. at freemarker.core.Expression.getStringValue(Expression.java:93)
  21. at freemarker.core.DollarVariable.accept(DollarVariable.java:76)
  22. at freemarker.core.Environment.visit(Environment.java:221)
  23. at freemarker.core.MixedContent.accept(MixedContent.java:92)
  24. at freemarker.core.Environment.visit(Environment.java:221)
  25. at freemarker.core.Environment.process(Environment.java:199)
  26. at freemarker.template.Template.process(Template.java:259)
  27. at com.you.freemarker.FreemarkerTemplate.printFtl(FreemarkerTemplate.java:77)
  28. at com.you.test.freemarker.FreemarkerTest.studentPrint(FreemarkerTest.java:172)
  29. at com.you.test.freemarker.FreemarkerTest.testDataType(FreemarkerTest.java:159)
  30. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  31. at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
  32. at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  33. at java.lang.reflect.Method.invoke(Unknown Source)
  34. at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
  35. at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
  36. at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
  37. at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
  38. at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
  39. at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
  40. at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
  41. at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
  42. at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
  43. at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
  44. at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
  45. at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
  46. at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
  47. at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
  48. at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
  49. at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
  50. at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
  51. at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
  52. at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
  53. at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
  54. 五月 30, 2014 11:23:18 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error
  55. 严重: Template processing error: "Error on line 20, column 8 in type.ftl\nExpecting a string, date or number here, Expression flag is instead a freemarker.template.TemplateBooleanModel$2"
  56. Error on line 20, column 8 in type.ftl
  57. Expecting a string, date or number here, Expression flag is instead a freemarker.template.TemplateBooleanModel$2
  58. The problematic instruction:
  59. ----------
  60. ==> ${flag} [on line 20, column 6 in type.ftl]
  61. ----------
  62. Java backtrace for programmers:
  63. ----------
  64. freemarker.core.NonStringException: Error on line 20, column 8 in type.ftl
  65. Expecting a string, date or number here, Expression flag is instead a freemarker.template.TemplateBooleanModel$2
  66. at freemarker.core.Expression.getStringValue(Expression.java:126)
  67. at freemarker.core.Expression.getStringValue(Expression.java:93)
  68. at freemarker.core.DollarVariable.accept(DollarVariable.java:76)
  69. at freemarker.core.Environment.visit(Environment.java:221)
  70. at freemarker.core.MixedContent.accept(MixedContent.java:92)
  71. at freemarker.core.Environment.visit(Environment.java:221)
  72. at freemarker.core.Environment.process(Environment.java:199)
  73. at freemarker.template.Template.process(Template.java:259)
  74. at com.you.freemarker.FreemarkerTemplate.printFtl(FreemarkerTemplate.java:77)
  75. at com.you.test.freemarker.FreemarkerTest.studentPrint(FreemarkerTest.java:172)
  76. at com.you.test.freemarker.FreemarkerTest.testDataType(FreemarkerTest.java:159)
  77. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  78. at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
  79. at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  80. at java.lang.reflect.Method.invoke(Unknown Source)
  81. at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
  82. at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
  83. at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
  84. at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
  85. at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
  86. at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
  87. at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
  88. at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
  89. at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
  90. at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
  91. at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
  92. at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
  93. at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
  94. at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
  95. at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
  96. at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
  97. at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
  98. at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
  99. at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
  100. at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
  101. Error on line 20, column 8 in type.ftl
  102. Expecting a string, date or number here, Expression flag is instead a freemarker.template.TemplateBooleanModel$2
  103. The problematic instruction:
  104. ----------
  105. ==> ${flag} [on line 20, column 6 in type.ftl]
  106. ----------
  107. Java backtrace for programmers:
  108. ----------
  109. freemarker.core.NonStringException: Error on line 20, column 8 in type.ftl
  110. Expecting a string, date or number here, Expression flag is instead a freemarker.template.TemplateBooleanModel$2
  111. at freemarker.core.Expression.getStringValue(Expression.java:126)
  112. at freemarker.core.Expression.getStringValue(Expression.java:93)
  113. at freemarker.core.DollarVariable.accept(DollarVariable.java:76)
  114. at freemarker.core.Environment.visit(Environment.java:221)
  115. at freemarker.core.MixedContent.accept(MixedContent.java:92)
  116. at freemarker.core.Environment.visit(Environment.java:221)
  117. at freemarker.core.Environment.process(Environment.java:199)
  118. at freemarker.template.Template.process(Template.java:259)
  119. at com.you.freemarker.FreemarkerTemplate.printFtl(FreemarkerTemplate.java:77)
  120. at com.you.test.freemarker.FreemarkerTest.studentPrint(FreemarkerTest.java:172)
  121. at com.you.test.freemarker.FreemarkerTest.testDataType(FreemarkerTest.java:159)
  122. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  123. at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
  124. at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  125. at java.lang.reflect.Method.invoke(Unknown Source)
  126. at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
  127. at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
  128. at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
  129. at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
  130. at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
  131. at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
  132. at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
  133. at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
  134. at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
  135. at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
  136. at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
  137. at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
  138. at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
  139. at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
  140. at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
  141. at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
  142. at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
  143. at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
  144. at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
  145. at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

2、错误原因

[html] view plain copy

 
  1. <#--定义布尔值-->
  2. <#assign flag = true/>
  3. ${flag}

不能直接输出除了字符串和数字之外的类型,否则会报错

3、解决办法

将布尔类型转换为字符串输出,使用${XXX?string}转换

[html] view plain copy

 
  1. <#--定义布尔值-->
  2. <#assign flag = true/>
  3. ${flag?string}

结果:true

异常-----freemarker.core.NonStringException的更多相关文章

  1. 异常-----freemarker.core.ParseException: Encountered

    1.错误描述 freemarker.core.ParseException: Encountered " " at line 14, column 12 in myself.ftl ...

  2. 异常-----freemarker.core.ParseException: Unexpected end of file reached

    freemarker自定义标签 1.错误描述 freemarker.core.ParseException: Unexpected end of file reached. at freemarker ...

  3. 异常-----freemarker.core.ParseException: Encountered "string"

    1.错误描述 freemarker.core.ParseException: Encountered "string" at line 21, column 21 in type. ...

  4. 异常-----freemarker.core.InvalidReferenceException问题解决

    案例一 1.1.错误描述 五月 28, 2014 9:56:48 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template ...

  5. 异常-----freemarker.core.ParseException: Token manager error

    一,案例一 1.1.错误描述 freemarker.core.ParseException: Token manager error: freemarker.core.TokenMgrError: L ...

  6. 异常-----freemarker.template.TemplateException: Expected collection or sequence. datas evaluated instead to freemarker.core.HashLiteral$SequenceHash on line 7, column 18 in inc/select.ftl.

    1.错误描述 六月 26, 2014 11:26:27 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template proc ...

  7. cosbench 异常 FreeMarker template error: The following has evaluated to null or missing

    问题现象: 使用Cosbench 0.4.2.c4 版本测试Ceph RGW read test失败,遇到异常如下: FreeMarker template error: The following ...

  8. freemarker.core.InvalidReferenceException: Expression stackObject.value.get(propertyName).toString() is undefined

    很奇怪的报错, 在实体中添加 toString方法后, 想在前台列表中使用 <s:debug标签调试, 发现报错如下: freemarker.core.InvalidReferenceExcep ...

  9. freemarker.core.InvalidReferenceException

    1.错误描述 freemarker.core.InvalidReferenceException:on line 68,column 18 in ftl/inc/incPro.ftl p.mainSe ...

随机推荐

  1. BZOJ 4767: 两双手 [DP 组合数]

    传送门 题意: 给你平面上两个向量,走到指定点,一些点不能经过,求方案数 煞笔提一开始被题面带偏了一直郁闷为什么方案不是无限 现在精简的题意.....不就是$bzoj3782$原题嘛,还不需要$Luc ...

  2. Android逆向之so的半自动化逆向

    因为工作需要,转型干android逆向,有几个月了.不过对于so的逆向,任然停留在,难难难的阶段,虽然上次自己还是逆向了一个15k左右的小so文件,但是,那个基本是靠,一步一步跟代码,查看堆栈信息来自 ...

  3. Kibana安装配置

    Kibana 是一个开源的分析和可视化平台,是ELK的重要部分.Kibana提供搜索.查看和与存储在 Elasticsearch 索引中的数据进行交互的功能.开发者或运维人员可以轻松地执行高级数据分析 ...

  4. python基础(str,list,tuple)

    python是一门动态解释型的强类型定义语言(先编译后解释) 动态类型语言 动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来 解释型 程 ...

  5. 打通MySQL的操作权限

    打通MySQL的操作权限 前面已经总结了<XAMPP的配置与使用>,虽然可以直接通过GUI控制面板去启动MySQL服务,但是有些相关的操作则需要在Windows中的CMD命令窗口中去对My ...

  6. 提高SQL查询效率

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  7. C# 使用AngleSharp 爬虫图片

    AngleSharp 简介 AngleSharp是基于.NET(C#)开发的专门解析HTML源码的DLL组件.根据HTML的DOM结构操作HTML,整个DOM已传输到逻辑类结构中.这种结构可以更好的操 ...

  8. Visual Studio 2017 发布 15.5 版本,百度网盘离线安装包下载。

    Visual Studio 2017 15.5 版本已正式发布,同时发布的还有 Visual Studio for Mac 7.3 .此次更新包含主要性能改进,新特性以及 bug 修复.发行说明中文版 ...

  9. spring 运行时属性值注入

    继续spring学习,今天介绍两种外部属性值注入的方式.当你需要读取配置信息时,可以快速读取. 开始之前先创建属性文件site.properties,放在classpath下面 #数据库配置 ### ...

  10. vue父子组件之间的通信

    利用props在子组件接受父组件传过来的值1.父组件parentComp.vue <template> <childComp :fromParentToChild="fro ...