即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

Request processing failed; nested exception is freemarker.core.NonStringException 异常处理

编程语言 liuao107329 11℃ 0评论


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




2、错误原因

[html] view
plain
 copy

 print?

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

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




3、解决办法

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

[html] view
plain
 copy

 print?

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




结果:true


转载请注明:CodingBlog » Request processing failed; nested exception is freemarker.core.NonStringException 异常处理

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情