1、错误描写叙述
六月 26, 2014 10:53:26 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error
严重: Template processing error: "Expression data[text] is undefined on line 9, column 51 in inc/select.ftl."Expression data[text] is undefined on line 9, column 51 in inc/select.ftl.
The problematic instruction:
----------
==> ${data[text]} [on line 9, column 49 in inc/select.ftl]in user-directive items.select [on line 12, column 6 in address.ftl]
----------Java backtrace for programmers:
----------
freemarker.core.InvalidReferenceException: Expression data[text] is undefined on line 9, column 51 in inc/select.ftl.at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:125)at freemarker.core.Expression.getStringValue(Expression.java:118)at freemarker.core.Expression.getStringValue(Expression.java:93)at freemarker.core.DollarVariable.accept(DollarVariable.java:76)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.MixedContent.accept(MixedContent.java:92)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.IfBlock.accept(IfBlock.java:82)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.IfBlock.accept(IfBlock.java:82)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:179)at freemarker.core.Environment.visit(Environment.java:428)at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.MixedContent.accept(MixedContent.java:92)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.Macro$Context.runMacro(Macro.java:172)at freemarker.core.Environment.visit(Environment.java:614)at freemarker.core.UnifiedCall.accept(UnifiedCall.java:106)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.MixedContent.accept(MixedContent.java:92)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.Environment.process(Environment.java:199)at freemarker.template.Template.process(Template.java:259)at com.you.freemarker.FreemarkerTemplate.printFtl(FreemarkerTemplate.java:77)at com.you.test.freemarker.FreemarkerTest.studentPrint(FreemarkerTest.java:267)at com.you.test.freemarker.FreemarkerTest.testSelect(FreemarkerTest.java:253)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)at java.lang.reflect.Method.invoke(Unknown Source)at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)at org.junit.runners.ParentRunner.run(ParentRunner.java:300)at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"><title>freemarker 下拉框</title></head><body><select id="city" name="city"><option>---请选择---</option><option value="武汉市">武汉市</option><option value="黄石市">黄石市</option><option value="黄冈市">黄冈市</option><option value="荆州市">荆州市</option></select><select id="zhuanye" name="zhuanye"><option>---请选择---</option><option value="请选择专业">请选择专业</option><option value="计算机科学与技术" selected>计算机科学与技术</option><option value="物流project">物流project</option><option value="英语专业">英语专业</option></select><select id="user" name="user"><option>---请选择---</option><option value="1">
Expression data[text] is undefined on line 9, column 51 in inc/select.ftl.
The problematic instruction:
----------
==> ${data[text]} [on line 9, column 49 in inc/select.ftl]in user-directive items.select [on line 12, column 6 in address.ftl]
----------Java backtrace for programmers:
----------
freemarker.core.InvalidReferenceException: Expression data[text] is undefined on line 9, column 51 in inc/select.ftl.at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:125)at freemarker.core.Expression.getStringValue(Expression.java:118)at freemarker.core.Expression.getStringValue(Expression.java:93)at freemarker.core.DollarVariable.accept(DollarVariable.java:76)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.MixedContent.accept(MixedContent.java:92)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.IfBlock.accept(IfBlock.java:82)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.IfBlock.accept(IfBlock.java:82)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:179)at freemarker.core.Environment.visit(Environment.java:428)at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.MixedContent.accept(MixedContent.java:92)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.Macro$Context.runMacro(Macro.java:172)at freemarker.core.Environment.visit(Environment.java:614)at freemarker.core.UnifiedCall.accept(UnifiedCall.java:106)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.MixedContent.accept(MixedContent.java:92)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.Environment.process(Environment.java:199)at freemarker.template.Template.process(Template.java:259)at com.you.freemarker.FreemarkerTemplate.printFtl(FreemarkerTemplate.java:77)at com.you.test.freemarker.FreemarkerTest.studentPrint(FreemarkerTest.java:267)at com.you.test.freemarker.FreemarkerTest.testSelect(FreemarkerTest.java:253)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)at java.lang.reflect.Method.invoke(Unknown Source)at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)at org.junit.runners.ParentRunner.run(ParentRunner.java:300)at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)Expression data[text] is undefined on line 9, column 51 in inc/select.ftl.
The problematic instruction:
----------
==> ${data[text]} [on line 9, column 49 in inc/select.ftl]in user-directive items.select [on line 12, column 6 in address.ftl]
----------Java backtrace for programmers:
----------
freemarker.core.InvalidReferenceException: Expression data[text] is undefined on line 9, column 51 in inc/select.ftl.at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:125)at freemarker.core.Expression.getStringValue(Expression.java:118)at freemarker.core.Expression.getStringValue(Expression.java:93)at freemarker.core.DollarVariable.accept(DollarVariable.java:76)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.MixedContent.accept(MixedContent.java:92)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.IfBlock.accept(IfBlock.java:82)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.IfBlock.accept(IfBlock.java:82)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:179)at freemarker.core.Environment.visit(Environment.java:428)at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.MixedContent.accept(MixedContent.java:92)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.Macro$Context.runMacro(Macro.java:172)at freemarker.core.Environment.visit(Environment.java:614)at freemarker.core.UnifiedCall.accept(UnifiedCall.java:106)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.MixedContent.accept(MixedContent.java:92)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.Environment.process(Environment.java:199)at freemarker.template.Template.process(Template.java:259)at com.you.freemarker.FreemarkerTemplate.printFtl(FreemarkerTemplate.java:77)at com.you.test.freemarker.FreemarkerTest.studentPrint(FreemarkerTest.java:267)at com.you.test.freemarker.FreemarkerTest.testSelect(FreemarkerTest.java:253)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)at java.lang.reflect.Method.invoke(Unknown Source)at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)at org.junit.runners.ParentRunner.run(ParentRunner.java:300)at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
六月 26, 2014 10:53:26 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error
严重: Template processing error: "Expression data[text] is undefined on line 9, column 51 in inc/select.ftl."Expression data[text] is undefined on line 9, column 51 in inc/select.ftl.
The problematic instruction:
----------
==> ${data[text]} [on line 9, column 49 in inc/select.ftl]in user-directive items.select [on line 12, column 6 in address.ftl]
----------Java backtrace for programmers:
----------
freemarker.core.InvalidReferenceException: Expression data[text] is undefined on line 9, column 51 in inc/select.ftl.at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:125)at freemarker.core.Expression.getStringValue(Expression.java:118)at freemarker.core.Expression.getStringValue(Expression.java:93)at freemarker.core.DollarVariable.accept(DollarVariable.java:76)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.MixedContent.accept(MixedContent.java:92)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.IfBlock.accept(IfBlock.java:82)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.IfBlock.accept(IfBlock.java:82)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:179)at freemarker.core.Environment.visit(Environment.java:428)at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.MixedContent.accept(MixedContent.java:92)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.Macro$Context.runMacro(Macro.java:172)at freemarker.core.Environment.visit(Environment.java:614)at freemarker.core.UnifiedCall.accept(UnifiedCall.java:106)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.MixedContent.accept(MixedContent.java:92)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.Environment.process(Environment.java:199)at freemarker.template.Template.process(Template.java:259)at com.you.freemarker.FreemarkerTemplate.printFile(FreemarkerTemplate.java:109)at com.you.test.freemarker.FreemarkerTest.studentFile(FreemarkerTest.java:281)at com.you.test.freemarker.FreemarkerTest.testSelect(FreemarkerTest.java:254)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)at java.lang.reflect.Method.invoke(Unknown Source)at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)at org.junit.runners.ParentRunner.run(ParentRunner.java:300)at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)Expression data[text] is undefined on line 9, column 51 in inc/select.ftl.
The problematic instruction:
----------
==> ${data[text]} [on line 9, column 49 in inc/select.ftl]in user-directive items.select [on line 12, column 6 in address.ftl]
----------Java backtrace for programmers:
----------
freemarker.core.InvalidReferenceException: Expression data[text] is undefined on line 9, column 51 in inc/select.ftl.at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:125)at freemarker.core.Expression.getStringValue(Expression.java:118)at freemarker.core.Expression.getStringValue(Expression.java:93)at freemarker.core.DollarVariable.accept(DollarVariable.java:76)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.MixedContent.accept(MixedContent.java:92)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.IfBlock.accept(IfBlock.java:82)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.IfBlock.accept(IfBlock.java:82)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:179)at freemarker.core.Environment.visit(Environment.java:428)at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.MixedContent.accept(MixedContent.java:92)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.Macro$Context.runMacro(Macro.java:172)at freemarker.core.Environment.visit(Environment.java:614)at freemarker.core.UnifiedCall.accept(UnifiedCall.java:106)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.MixedContent.accept(MixedContent.java:92)at freemarker.core.Environment.visit(Environment.java:221)at freemarker.core.Environment.process(Environment.java:199)at freemarker.template.Template.process(Template.java:259)at com.you.freemarker.FreemarkerTemplate.printFile(FreemarkerTemplate.java:109)at com.you.test.freemarker.FreemarkerTest.studentFile(FreemarkerTest.java:281)at com.you.test.freemarker.FreemarkerTest.testSelect(FreemarkerTest.java:254)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)at java.lang.reflect.Method.invoke(Unknown Source)at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)at org.junit.runners.ParentRunner.run(ParentRunner.java:300)at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
2、错误原因
在宏定义中是text
<#macro select id datas value="" key="" text="">
可是在引用时却是value
<@items.select id="user" datas=users key="userNo" value="userName"/>
3、解决的方法
将“value”改为“text”
<@items.select id="user" datas=users key="userNo" text="userName"/>