一,案例一

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. python用Django+Celery+Redis 监视程序(一)

    C盘创建一个目录就叫DjangoDemo,然后开始在该目录下操作. 1.新建Django工程与应用 运行pip install django 安装django 这里我们建一个名为demo的项目和hom ...

  2. 【SSH框架】之Spring系列(一)

    微信公众号:compassblog 欢迎关注.转发,互相学习,共同进步! 有任何问题,请后台留言联系! 1.前言 前面更新过几篇关于 Struts2 框架和 Hibernate 框架的文章,但鉴于这两 ...

  3. 脚本启用python虚拟环境

    #!/bin/bash rm -rf /data/website/activities/virtualenvvirtualenv --no-site-packages -p python3 /data ...

  4. WEB页面的生命周期,DOMContentLoaded,load,beforeunload,unload

    简言 理解WEB页面的生命周期,文档加载事件及顺序对WEB开发有十分的重要意义.如果不理解,在元素未加载就提前操作元素,则得不到想要的结果.而如果页面完全加载完成后,再进行操作,则又会影响用户体验. ...

  5. WinXP系统下Opencms的安装与配置

    1.WinXP系统下安装opencms (1)mysql已安装5.1.40 cmd命令行:mysql   -uroot  -proot (2)OpenCMS在安装时要求MySQL系统变量“max_al ...

  6. springboot2.0(一):【重磅】Spring Boot 2.0权威发布

    就在昨天Spring Boot2.0.0.RELEASE正式发布,今天早上在发布Spring Boot2.0的时候还出现一个小插曲,将Spring Boot2.0同步到Maven仓库的时候出现了错误, ...

  7. Yii2-admin的详细使用教程

    Yii2-admin的详细使用教程 参考:http://www.yiichina.com/tutorial/571    http://www.kancloud.cn/curder/yii/24775 ...

  8. Angular Universal(统一平台)笔记

    angular官网高级文档AngularUniversal部分的翻译总结,这东西在angular4开始正式被官方支持了,目前其实支持的服务器端还没有很多,但好歹包括了node和DotNetCore,算 ...

  9. 检验金额合法性, 只能是正数 或小数(常用js总结)

    //检验金额合法性 只能是正数 或小数 function checkMoney(fileds){ $(fileds).keyup(function () { ,}/); var txt = ''; i ...

  10. 在Hadoop2.2基础上安装Spark(伪分布式)

    没想到,在我的hadoop2.2.0小集群上上安装传说中的Spark竟然如此顺利,可能是因为和搭建Hadoop时比较像,更多需要学习的地方还是scala编程和RDD机制吧 总之,开个好头 原来的集群: ...