异常-----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

智能推荐

《tensorflow笔记》学习记录第三节_tegsvvvsbddbxvg184411115144c3sessseedab cyentraall-程序员宅基地

文章浏览阅读85次。3.1张量、计算图、会话定义:基于tensorflow的NN:用张量表示数据,用结算图搭建神经网络,用会话执行计算图,优化线上 的权重(参数),得到模型张量(tensor) : 多维数组(列表)阶 :张量的维度张量可以表示 0阶到n阶数组(列表)维数 阶 名字 例子 0-D 0 标量 scalar ..._tegsvvvsbddbxvg184411115144c3sessseedab cyentraalldrzzlegsbvvf

计算机主机发出呲呲响声,电脑电源有滋滋声怎么解决-程序员宅基地

文章浏览阅读2.3w次。大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。发出滋滋声一般有以下三种情况:1、市电电压过高,或电源功率小,负载过重会产生滋滋声。如果市电电压过高,可另加个稳压器;如果主机内硬件功耗大,是这个电源能承了的,换个功率大的电源。2、电源中的电感线圈和变压器由于浸漆不好或设计不良造成你说的电感噪音,一般不会影响使用,除了更换,没什么好的办法解决。3、电源中的劣质电容,或爆浆电容通电..._主机里面有电流滋滋滋声

Rabbitmq学习笔记008---AmqpException: No method found for class java.lang.String_rabbitmq no method found for class java.lang.strin-程序员宅基地

文章浏览阅读4.9k次。JAVA技术交流QQ群:1709331521.我这里报错是因为,接收的地方,写的是process(byte[] by) 而发送的地方,是send(String message),不统一造成的,2.如果向队列中发送了字符串,但是获取的时候,却用process(byte[] by)就会报错 这个时候可以登录rabbitmq后台:http://172.19.128.38:156..._rabbitmq no method found for class java.lang.string

android 查看路由器ip,如何查看路由器ip地址进入登录页面-程序员宅基地

文章浏览阅读1.4k次。通过登陆路由器的IP地址我们才能进入路由器,那样我们就可以限制别人的网速,也可以通过路由设置只允许自己的电脑IP地址可以上网,别人是不能上网的。IP地址还有好多好处哦,不知道的可以去自行百度一下吧。这里我就不废话了,直接教大家怎么去查看自己的IP地址,这里分别介绍电脑和手机如何查看路由器ip地址的方法。方法一、通过路由器背面标签查看如下图所示,路由器背面标签上有路由器ip地址:192.168.1...._android 获取路由器ip地址

基于 Verilog 的经典数字电路设计(15)奇偶校验器-程序员宅基地

文章浏览阅读1.3w次,点赞3次,收藏75次。奇偶校验(Parity Check)是一种校验数据传输的正确性的方法,根据被传输的一组二进制代码的数位中 “1” 的个数是奇数或偶数来进行校验;采用奇数的称为奇校验,反之,称为偶校验;采用何种校验是事先规定好的,通常专门设置一个奇偶校验位,用它使这组代码中 “1” 的个数为奇数或偶数;例如奇校验,当接收端收到这组代码时,校验 “1” 的个数是否为奇数,从而确定传输代码的正确性。_奇偶校验器

asp中rs.addnew与rs.update更新数据库的方法-程序员宅基地

文章浏览阅读7k次。rs.addnew'增加一条新的空的数据记录rs("rs1")="添加的数据"rs.update'在空记录中增加了内容rs.closeset rs=nothing'对已有数据进行修改rs("rs1")="修改后的数据"rs.updaters.closeset rs=nothing==========================rs.add_rs.update

随便推点

IDEA的常见的设置和优化(功能)_idea 优化-程序员宅基地

文章浏览阅读8.6k次,点赞12次,收藏59次。显示工具条(1)效果图(2)设置方法标注1:View–>Toolbar 标注2:View–>Tool Buttons设置鼠标悬浮提示(1)效果图(2)设置方法File–>settings–>Editor–>General–>勾选Show quick documentation…显示方法分隔符(1)效果图(2)设置方法File–>settings–>Editor–>Appearance–>勾选忽略大小写提示(_idea 优化

RStudio: Warning message: Setting LC_CTYPE failed, using "C" 浅析_rstudio 中warning messages-程序员宅基地

文章浏览阅读1w次,点赞4次,收藏6次。RStudio 不能显示中文? 问题是怎样的呢?.... Mac OS 是一个类Linux系统,在Linux中,locale来设置程序运行的不同语言环境,locale由 ANSI C提供支持。locale的命名规则为_.,如zh_CN.GBK,zh代表中文, CN代表大陆地区,GBK表示字符集。在locale环境中,用一组变量代表国际化环境中的不同设置....._rstudio 中warning messages

【MATLAB库函数系列】firls(最小二乘线性相位FIR滤波器设计)的C语言实现_matlab firls-程序员宅基地

文章浏览阅读6.8k次,点赞4次,收藏4次。firls函数功能FILS设计了一种线性相位FIR滤波器,它可以最小化理想分段线性函数与滤波器在一组期望频带上的幅值响应之间的加权积分平方误差。b = firls(n,f,a)b = firls(n,f,a,w)b = firls(n,f,a,'ftype')b = firls(n,f,a,w,'ftype')f是在0和1之间的范围内指定的频率点对的矢量,其中1对应于奈奎斯特频率。频率必须按递增顺序排列。允许重复的频点,并且实际上可以用来设计与具有矩形(Rectwine)窗口的fir1和fir_matlab firls

android实现菜单栏第一部分主页折叠菜单_android 折叠二级菜单-程序员宅基地

文章浏览阅读1.2k次。首先我们需要重写一个onCreateOptionsMenu方法,然后在方法内使用add方法添加你想要添加的内容package com.example.imgsw;import androidx.annotation.NonNull;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;..._android 折叠二级菜单

计算Fibonacci数列的前30项,需注意逻辑问题_斐波那契数列前30项-程序员宅基地

文章浏览阅读6k次,点赞2次,收藏5次。解析:斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,75025,121393,196418 317811,514229,832040…这个数列从第3项开始,每一项都等于前两项之和。F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)只要找到相应_斐波那契数列前30项

实训日记2021/7/1_excluded folders-程序员宅基地

文章浏览阅读644次。一、解决jstl导入爆红的问题1.有人说是因为把src被excluded了,把它从里面拉出来就行了,然后这个excluded是在File→project structure→Module里面的,但是我的src没有在这个里面。代码被excluded的意思是,将文件标记为Excluded目录后,idea就不会为该文件创建索引,全局搜索也不会搜里面的内容,编辑代码不会智能提示,Excluded Folders相当于代码废弃场2.!!!!!,有用有用!这个方法真的有用!百度上其他的解决方案我看着就不想试,直_excluded folders