Azi*_*ziz 6 java freemarker maven
我面临的错误是如此奇怪。一切看起来都很好,但是当浏览器将GET请求发送到服务器时出现此错误。我实际上想捕获的是HTTP参数,将它们保存在发送到Freemarker模板的ArrayList中保存的对象中。
请你帮助我好吗?非常感谢。
错误:
freemarker.log._JULLoggerFactory $ JULLogger错误严重:执行FreeMarker模板时出错FreeMarker模板错误:以下内容评估为空或丢失:==> item.lat1 [在模板“ view / result.ftl”中,第18行,第15列]
freemarker.core.InvalidReferenceException:[...异常消息已经被打印;请参阅上方...],位于freemarker.core.EvalUtil.coerceModelToString(EvalUtil.java:355)处,位于freemarker.core.EvalUtil.java:355,位于freemarker.core.Expression.evalAndCoerceToString(Expression.java :)处82)在freemarker.core.DollarVariable.accept(DollarVariable.java:41)在freemarker.core.Environment.visit(Environment.java:324)在freemarker.core.MixedContent.accept(MixedContent.java:54)在freemarker。 freemarker.core.IteratorBlock $ IterationContext.executeNestedBlock(IteratorBlock.java:220)处的freemarker.core.IteratorBlock $ IterationContext.executeNestedBlockInner(IteratorBlock.java:268)处的core.Environment.visitByHiddingParent(Environment.java:345) 。
[qtp285763673-17]错误spark.webserver.MatcherFilter-java.lang.IllegalArgumentException:freemarker.core.InvalidReferenceException:以下内容评估为null或缺少:==> item.lat1 [在模板“ view / result.ftl”中,位于第18行,第15栏]
..但是,是的,因为我确实打印了Array,并且效果很好!
final FreeMarkerEngine freeMarkerEngine = new FreeMarkerEngine();
final Configuration freeMarkerConfiguration = new Configuration();
freeMarkerConfiguration.setTemplateLoader(new ClassTemplateLoader(App.class, "/"));
freeMarkerEngine.setConfiguration(freeMarkerConfiguration);
get("/rest", (request, response) -> {
Double lat1 = Double.parseDouble(request.queryParams("lat1") != null ? request.queryParams("lat1") : "anonymous");
Double lon1 = Double.parseDouble(request.queryParams("lon1") != null ? request.queryParams("lon1") : "anonymous");
Double lat2 = Double.parseDouble(request.queryParams("lat2") != null ? request.queryParams("lat2") : "anonymous");
Double lon2 = Double.parseDouble(request.queryParams("lon2") != null ? request.queryParams("lon2") : "anonymous");
if (shouldReturnHtml(request)) {
response.status(200);
response.type("text/html");
Map<String, Object> attributes = new HashMap<>();
attributes.put("list",loadTheList(lat1,lon1,lat2,lon2));
return freeMarkerEngine.render(new ModelAndView(attributes, "/view/result.ftl"));
}
else {
response.status(200);
response.type("application/json");
return null;
}
});
}
private static boolean shouldReturnHtml(Request request) {
String accept = request.headers("Accept");
return accept != null && accept.contains("text/html");
}
public static ArrayList<Bereken> loadTheList(double lat1, double lon1, double lat2, double lon2) {
ArrayList<Bereken> list = new ArrayList<>();
list.add(new Bereken(lat1,lon1,lat2,lon2));
return list;
}
Run Code Online (Sandbox Code Playgroud)
和result.ftl:
<#list list as item>
<h2>${item.lat1}</h2>
<h2>${item.lon1}</h2>
<h2>${item.lat2}</h2>
<h2>${item.lon2}</h2>
</#list>
Run Code Online (Sandbox Code Playgroud)
我知道这是一个老问题,但我刚刚遇到了这个问题。如果您将私有类的实例(我刚刚尝试过)传递给它,Freemarker 还会抱怨该值“为空或丢失”。如果你在一个Java Bean类通过,它需要是public。在这种情况下,错误消息非常具有误导性。
| 归档时间: |
|
| 查看次数: |
17606 次 |
| 最近记录: |