异常-----freemarker.core.NonStringException-程序员宅基地

技术标签: java  开发工具  

 一,案例一

假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过35岁这个魔咒,假如你想体验BAT的工作环境,那么现在请我们一起开启提升技术之旅吧,详情请点击http://106.12.206.16:8080/qingruihappy/index.html

1.1、错误描述

 

  1 <html>
  2   <head>
  3     <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  4     <title>freemarker基本数据类型</title>
  5 
  6   </head>
  7   
  8   <body>
  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)

1.2、错误原因

 

 

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

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

1.3、解决办法

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

 

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

结果:true

二,案例二

2.1,错误描述

 

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

 

 

 

 2.2、错误原因

1 <#--freemarker定义了一个连续的序列-->
2      <#assign nums=[1..100]/>
3      <#list nums as num>
4          ${num}
5      </#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.   
  6.   </head>  
  7.     
  8.   <body>  
  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
 
  1. <#--定义布尔值-->  
  2. <#assign flag = true/>  
  3. ${flag}  

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

 

 

3、解决办法

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

 

[html]  view plain  copy
 
  1. <#--定义布尔值-->  
  2. <#assign flag = true/>  
  3. ${flag?string}  

 

 

结果:true

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34238642/article/details/85957183

智能推荐

5个超厉害的资源搜索网站,每一款都可以让你的资源满满!_最全资源搜索引擎-程序员宅基地

文章浏览阅读1.6w次,点赞8次,收藏41次。生活中我们无时不刻不都要在网站搜索资源,但就是缺少一个趁手的资源搜索网站,如果有一个比较好的资源搜索网站可以帮助我们节省一大半时间!今天小编在这里为大家分享5款超厉害的资源搜索网站,每一款都可以让你的资源丰富精彩!网盘传奇一款最有效的网盘资源搜索网站你还在为找网站里面的资源而烦恼找不到什么合适的工具而烦恼吗?这款网站传奇网站汇聚了4853w个资源,并且它每一天都会持续更新资源;..._最全资源搜索引擎

Book类的设计(Java)_6-1 book类的设计java-程序员宅基地

文章浏览阅读4.5k次,点赞5次,收藏18次。阅读测试程序,设计一个Book类。函数接口定义:class Book{}该类有 四个私有属性 分别是 书籍名称、 价格、 作者、 出版年份,以及相应的set 与get方法;该类有一个含有四个参数的构造方法,这四个参数依次是 书籍名称、 价格、 作者、 出版年份 。裁判测试程序样例:import java.util.*;public class Main { public static void main(String[] args) { List <Book>_6-1 book类的设计java

基于微信小程序的校园导航小程序设计与实现_校园导航微信小程序系统的设计与实现-程序员宅基地

文章浏览阅读613次,点赞28次,收藏27次。相比于以前的传统手工管理方式,智能化的管理方式可以大幅降低学校的运营人员成本,实现了校园导航的标准化、制度化、程序化的管理,有效地防止了校园导航的随意管理,提高了信息的处理速度和精确度,能够及时、准确地查询和修正建筑速看等信息。课题主要采用微信小程序、SpringBoot架构技术,前端以小程序页面呈现给学生,结合后台java语言使页面更加完善,后台使用MySQL数据库进行数据存储。微信小程序主要包括学生信息、校园简介、建筑速看、系统信息等功能,从而实现智能化的管理方式,提高工作效率。

有状态和无状态登录

传统上用户登陆状态会以 Session 的形式保存在服务器上,而 Session ID 则保存在前端的 Cookie 中;而使用 JWT 以后,用户的认证信息将会以 Token 的形式保存在前端,服务器不需要保存任何的用户状态,这也就是为什么 JWT 被称为无状态登陆的原因,无状态登陆最大的优势就是完美支持分布式部署,可以使用一个 Token 发送给不同的服务器,而所有的服务器都会返回同样的结果。有状态和无状态最大的区别就是服务端会不会保存客户端的信息。

九大角度全方位对比Android、iOS开发_ios 开发角度-程序员宅基地

文章浏览阅读784次。发表于10小时前| 2674次阅读| 来源TechCrunch| 19 条评论| 作者Jon EvansiOSAndroid应用开发产品编程语言JavaObjective-C摘要:即便Android市场份额已经超过80%,对于开发者来说,使用哪一个平台做开发仍然很难选择。本文从开发环境、配置、UX设计、语言、API、网络、分享、碎片化、发布等九个方面把Android和iOS_ios 开发角度

搜索引擎的发展历史

搜索引擎的发展历史可以追溯到20世纪90年代初,随着互联网的快速发展和信息量的急剧增加,人们开始感受到了获取和管理信息的挑战。这些阶段展示了搜索引擎在技术和商业模式上的不断演进,以满足用户对信息获取的不断增长的需求。

随便推点

控制对象的特性_控制对象特性-程序员宅基地

文章浏览阅读990次。对象特性是指控制对象的输出参数和输入参数之间的相互作用规律。放大系数K描述控制对象特性的静态特性参数。它的意义是:输出量的变化量和输入量的变化量之比。时间常数T当输入量发生变化后,所引起输出量变化的快慢。(动态参数) ..._控制对象特性

FRP搭建内网穿透(亲测有效)_locyanfrp-程序员宅基地

文章浏览阅读5.7w次,点赞50次,收藏276次。FRP搭建内网穿透1.概述:frp可以通过有公网IP的的服务器将内网的主机暴露给互联网,从而实现通过外网能直接访问到内网主机;frp有服务端和客户端,服务端需要装在有公网ip的服务器上,客户端装在内网主机上。2.简单的图解:3.准备工作:1.一个域名(www.test.xyz)2.一台有公网IP的服务器(阿里云、腾讯云等都行)3.一台内网主机4.下载frp,选择适合的版本下载解压如下:我这里服务器端和客户端都放在了/usr/local/frp/目录下4.执行命令# 服务器端给执_locyanfrp

UVA 12534 - Binary Matrix 2 (网络流‘最小费用最大流’ZKW)_uva12534-程序员宅基地

文章浏览阅读687次。题目:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=93745#problem/A题意:给出r*c的01矩阵,可以翻转格子使得0表成1,1变成0,求出最小的步数使得每一行中1的个数相等,每一列中1的个数相等。思路:网络流。容量可以保证每一行和每一列的1的个数相等,费用可以算出最小步数。行向列建边,如果该格子是_uva12534

免费SSL证书_csdn alphassl免费申请-程序员宅基地

文章浏览阅读504次。1、Let's Encrypt 90天,支持泛域名2、Buypass:https://www.buypass.com/ssl/resources/go-ssl-technical-specification6个月,单域名3、AlwaysOnSLL:https://alwaysonssl.com/ 1年,单域名 可参考蜗牛(wn789)4、TrustAsia5、Alpha..._csdn alphassl免费申请

测试算法的性能(以选择排序为例)_算法性能测试-程序员宅基地

文章浏览阅读1.6k次。测试算法的性能 很多时候我们需要对算法的性能进行测试,最简单的方式是看算法在特定的数据集上的执行时间,简单的测试算法性能的函数实现见testSort()。【思想】:用clock_t计算某排序算法所需的时间,(endTime - startTime)/ CLOCKS_PER_SEC来表示执行了多少秒。【关于宏CLOCKS_PER_SEC】:以下摘自百度百科,“CLOCKS_PE_算法性能测试

Lane Detection_lanedetectionlite-程序员宅基地

文章浏览阅读1.2k次。fromhttps://towardsdatascience.com/finding-lane-lines-simple-pipeline-for-lane-detection-d02b62e7572bIdentifying lanes of the road is very common task that human driver performs. This is important ..._lanedetectionlite

推荐文章

热门文章

相关标签