一,案例一

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. typeof面试题解答

    面试题 alert(typeof null); // object alert(typeof undefined); // undefined alert(typeof NaN); // number ...

  2. MySQL数据类型概念

    关系型数据库的特点 1,数据以表格的形式出现 2,每行为各种记录的名称 3,每列为数据名称所对应的数据域 4许多的行和列组成一张table 5若干的表单组成databases 术语 数据库:关联表的集 ...

  3. ionic2 +Angular 使用自定义图标

    结合阿里巴巴矢量图标库实现在ionic2开发中使用自定义图标. step1:在阿里巴巴图标管理中新建项目,并添加自己选中的图标到购物车: step2:将购物车中的图标"添加至项目" ...

  4. css3渐变 transition使用方法

    <style> div{ width:300px; height:300px; background:#89F; margin:100px auto; transition:width 1 ...

  5. go 开发环境安装教程 windows

         首先进入go 语言官网下载最新安装包,我目前安装的版本是 1.8.3版本:go1.8.3.windows-amd64.msi 如果下载慢,这个是百度云地址:https://pan.baidu ...

  6. CentOS 挂载 cdrom, iso文件作为源

    在生产系统环境中的机器都没有连接互联网,因此都是使用本地源. 首先,需要将cdrom, 或 iso文件挂载到本地目录. 1.挂载光驱: 将cdrom 放入光驱. $  mkdir /media/cdr ...

  7. crack the coding interview

    crack the coding interview answer c++ 1.1 #ifndef __Question_1_1_h__  #define __Question_1_1_h__  #i ...

  8. length()方法,length属性和size()的方法的区别

    length()方法,length属性和size()的方法的区别: length()方法是针对字符串来说的,要求一个字符串的长度就要用到它的length()方法: length属性是针对Java中的数 ...

  9. 使用CrashHandler来获取应用的crash信息

    源码地址https://github.com/king1039/android-art-res/tree/master/Chapter_13/CrashTest/src/com/ryg/crashte ...

  10. uva1625

    思路:每次选择颜色面临有两个选择:1.序列A的首部颜色 2.序列B的首部元素,定义状态d[i][j]表示A序列已经选取了前i个颜色,B序列已经选取了前j个颜色的情况下最小的L(c)总和. 状态转移:c ...