Request processing failed; nested exception is freemarker.core.NonStringException异常解决

xiaoxiao2021-02-28  63

<html>     <head>       <meta http-equiv="content-type" content="text/html; charset=UTF-8">       <title>freemarker基本数据类型</title>        </head>          <body>             张三丰                123,456                   Error on line 20, column 8 in type.ftl   Expecting a string, date or number here, Expression flag is instead a freemarker.template.TemplateBooleanModel$2   The problematic instruction:   ----------   ==> ${flag} [on line 20, column 6 in type.ftl]   ----------      Java backtrace for programmers:   ----------   freemarker.core.NonStringException: Error on line 20, column 8 in type.ftl   Expecting a string, date or number here, Expression flag is instead a freemarker.template.TemplateBooleanModel$2       at freemarker.core.Expression.getStringValue(Expression.java:126)       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.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:172)       at com.you.test.freemarker.FreemarkerTest.testDataType(FreemarkerTest.java:159)       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)   五月 30, 2014 11:23:18 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error   严重: 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"      Error on line 20, column 8 in type.ftl   Expecting a string, date or number here, Expression flag is instead a freemarker.template.TemplateBooleanModel$2   The problematic instruction:   ----------   ==> ${flag} [on line 20, column 6 in type.ftl]   ----------      Java backtrace for programmers:   ----------   freemarker.core.NonStringException: Error on line 20, column 8 in type.ftl   Expecting a string, date or number here, Expression flag is instead a freemarker.template.TemplateBooleanModel$2       at freemarker.core.Expression.getStringValue(Expression.java:126)       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.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:172)       at com.you.test.freemarker.FreemarkerTest.testDataType(FreemarkerTest.java:159)       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)         Error on line 20, column 8 in type.ftl   Expecting a string, date or number here, Expression flag is instead a freemarker.template.TemplateBooleanModel$2   The problematic instruction:   ----------   ==> ${flag} [on line 20, column 6 in type.ftl]   ----------      Java backtrace for programmers:   ----------   freemarker.core.NonStringException: Error on line 20, column 8 in type.ftl   Expecting a string, date or number here, Expression flag is instead a freemarker.template.TemplateBooleanModel$2       at freemarker.core.Expression.getStringValue(Expression.java:126)       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.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:172)       at com.you.test.freemarker.FreemarkerTest.testDataType(FreemarkerTest.java:159)       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、错误原因

[html]  view plain  copy  print ? <#--定义布尔值-->   <#assign flag = true/>   ${flag}   不能直接输出除了字符串和数字之外的类型,否则会报错

3、解决办法

    将布尔类型转换为字符串输出

    将dto 中boolean 类型的isXXXX  改为getXXX

结果:true

转载请注明原文地址: https://www.6miu.com/read-44713.html

最新回复(0)