博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
异常-----freemarker.template.TemplateException
阅读量:6655 次
发布时间:2019-06-25

本文共 33748 字,大约阅读时间需要 112 分钟。

一,案例一

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

1.1、错误描述

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

 

 1.2、错误原因

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

    因为flag已经定义为true,再次定义会报错

 

1.3、解决办法

     修改变量名,将flag修改为num

1 ${(num.color)???string}

结果:false

 

 二,案例二

2.1、错误描述

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

2.2、错误原因

1 <#--freemarker HashMap取值-->2 <#assign maps={"1":"张三丰","2":"李思思","3":"张三强","4":"王五"}/>3 ${maps[3]}

map取值时是要取序列、数字、字符串

2.3,解决办法

    ${maps["3"]}

 

 三,案例三

3.1,错误描述

1   2     3     
4 freemarker处理哈希表的内建函数 5 6 7 8 9 张三强 10 11 12 Expected collection or sequence. maps evaluated instead to freemarker.core.HashLiteral$SequenceHash on line 13, column 17 in map.ftl. 13 The problematic instruction: 14 ---------- 15 ==> list maps as map [on line 13, column 10 in map.ftl] 16 ---------- 17 18 Java backtrace for programmers: 19 ---------- 20 freemarker.template.TemplateException: Expected collection or sequence. maps evaluated instead to freemarker.core.HashLiteral$SequenceHash on line 13, column 17 in map.ftl. 21 at freemarker.core.TemplateObject.invalidTypeException(TemplateObject.java:136) 22 at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:190) 23 at freemarker.core.Environment.visit(Environment.java:428) 24 at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102) 25 at freemarker.core.Environment.visit(Environment.java:221) 26 at freemarker.core.MixedContent.accept(MixedContent.java:92) 27 at freemarker.core.Environment.visit(Environment.java:221) 28 at freemarker.core.Environment.process(Environment.java:199) 29 at freemarker.template.Template.process(Template.java:259) 30 at com.you.freemarker.FreemarkerTemplate.printFtl(FreemarkerTemplate.java:77) 31 at com.you.test.freemarker.FreemarkerTest.studentPrint(FreemarkerTest.java:210) 32 at com.you.test.freemarker.FreemarkerTest.testMap(FreemarkerTest.java:197) 33 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 34 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 35 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 36 at java.lang.reflect.Method.invoke(Unknown Source) 37 at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) 38 at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) 39 at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) 40 at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) 41 at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) 42 at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) 43 at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) 44 at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) 45 at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) 46 at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) 47 at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) 48 at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) 49 at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) 50 at org.junit.runners.ParentRunner.run(ParentRunner.java:300) 51 at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) 52 at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 53 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) 54 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) 55 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 56 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 57 六月 04, 2014 10:52:14 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 58 严重: Template processing error: "Expected collection or sequence. maps evaluated instead to freemarker.core.HashLiteral$SequenceHash on line 13, column 17 in map.ftl." 59 60 Expected collection or sequence. maps evaluated instead to freemarker.core.HashLiteral$SequenceHash on line 13, column 17 in map.ftl. 61 The problematic instruction: 62 ---------- 63 ==> list maps as map [on line 13, column 10 in map.ftl] 64 ---------- 65 66 Java backtrace for programmers: 67 ---------- 68 freemarker.template.TemplateException: Expected collection or sequence. maps evaluated instead to freemarker.core.HashLiteral$SequenceHash on line 13, column 17 in map.ftl. 69 at freemarker.core.TemplateObject.invalidTypeException(TemplateObject.java:136) 70 at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:190) 71 at freemarker.core.Environment.visit(Environment.java:428) 72 at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102) 73 at freemarker.core.Environment.visit(Environment.java:221) 74 at freemarker.core.MixedContent.accept(MixedContent.java:92) 75 at freemarker.core.Environment.visit(Environment.java:221) 76 at freemarker.core.Environment.process(Environment.java:199) 77 at freemarker.template.Template.process(Template.java:259) 78 at com.you.freemarker.FreemarkerTemplate.printFtl(FreemarkerTemplate.java:77) 79 at com.you.test.freemarker.FreemarkerTest.studentPrint(FreemarkerTest.java:210) 80 at com.you.test.freemarker.FreemarkerTest.testMap(FreemarkerTest.java:197) 81 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 82 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 83 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 84 at java.lang.reflect.Method.invoke(Unknown Source) 85 at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) 86 at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) 87 at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) 88 at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) 89 at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) 90 at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) 91 at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) 92 at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) 93 at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) 94 at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) 95 at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) 96 at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) 97 at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) 98 at org.junit.runners.ParentRunner.run(ParentRunner.java:300) 99 at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)100 at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)101 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)102 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)103 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)104 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)105 106 107 Expected collection or sequence. maps evaluated instead to freemarker.core.HashLiteral$SequenceHash on line 13, column 17 in map.ftl.108 The problematic instruction:109 ----------110 ==> list maps as map [on line 13, column 10 in map.ftl]111 ----------112 113 Java backtrace for programmers:114 ----------115 freemarker.template.TemplateException: Expected collection or sequence. maps evaluated instead to freemarker.core.HashLiteral$SequenceHash on line 13, column 17 in map.ftl.116 at freemarker.core.TemplateObject.invalidTypeException(TemplateObject.java:136)117 at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:190)118 at freemarker.core.Environment.visit(Environment.java:428)119 at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)120 at freemarker.core.Environment.visit(Environment.java:221)121 at freemarker.core.MixedContent.accept(MixedContent.java:92)122 at freemarker.core.Environment.visit(Environment.java:221)123 at freemarker.core.Environment.process(Environment.java:199)124 at freemarker.template.Template.process(Template.java:259)125 at com.you.freemarker.FreemarkerTemplate.printFtl(FreemarkerTemplate.java:77)126 at com.you.test.freemarker.FreemarkerTest.studentPrint(FreemarkerTest.java:210)127 at com.you.test.freemarker.FreemarkerTest.testMap(FreemarkerTest.java:197)128 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)129 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)130 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)131 at java.lang.reflect.Method.invoke(Unknown Source)132 at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)133 at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)134 at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)135 at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)136 at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)137 at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)138 at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)139 at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)140 at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)141 at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)142 at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)143 at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)144 at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)145 at org.junit.runners.ParentRunner.run(ParentRunner.java:300)146 at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)147 at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)148 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)149 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)150 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)151 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

 

3.2,错误原因 

maps不是一个序列,不能用list遍历map

1  <#--freemarker HashMap取值-->2 <#assign maps={"1":"张三丰","2":"李思思","3":"张三强","4":"王五"}>3 ${maps["3"]}4      5 <#list maps as map>6  ${map}7 

3.3、解决办法

 

    先获取map中的key值,再通过key值序列遍历map

 

1 <#--freemarker HashMap取值-->2      <#assign maps={"1":"张三丰","2":"李思思","3":"张三强","4":"王五"}>3      ${maps["3"]}4      5      <#assign keys=maps?keys>6      <#list keys as key>7         ${key}----${maps[key]}8      

 

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

转载地址:http://uqtto.baihongyu.com/

你可能感兴趣的文章
Git 远程分支
查看>>
华为S9300、s5700交换机端口镜像配置
查看>>
按下Enter焦点移至下一个控件的实现js代码
查看>>
zabbix系统日志文件监控key
查看>>
Salttack笔记
查看>>
如何利用ucenter实现单点登录
查看>>
apache-tomcat-6.0.37 部署
查看>>
sns推广技巧四步骤
查看>>
Web Service
查看>>
关于编程语言的一些认识
查看>>
Linux管理查看工具htop、glances、dstat
查看>>
网页中的代码
查看>>
聊聊手游的那些惊喜与惊吓
查看>>
面试中容易问到的网络编程问题
查看>>
linux根文件系统
查看>>
android的线程和进程
查看>>
为什么用Docker,Docker究竟有什么用呢
查看>>
调侃之VNC
查看>>
Guava学习笔记:Google Guava 类库简介
查看>>
个人网站运维上线——服务器介绍
查看>>