- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下一段代码-
public class Result {
private Map<String, String> dataPoints = new LinkedHashMap<String, String>();
public Map<String, String> getData() {
return Maps.newHashMap(data);
}
public Set<Map.Entry<String, String>> getDataEntries() {
return data.entrySet();
}
public void addData(final String key, final String value) {
this.data.put(key, value);
}
}
我正在使用 LinkedHashMap,因为我想维护插入顺序。我正在尝试在我的 freemarker 代码中迭代 map ,如下所示。但是,我得到一个异常(exception)。
<#if (result.dataPoints?keys?size > 0) >
<#list result.getDataEntries() as entry>
<tr>
<td width="35%">
<div>${entry.key}</div>
</td>
<td width="45%">${entry.value}</td>
<td width="19%"> </td>
</tr>
</#list>
</#if>
异常(exception):
Expression result.getDataEntries is undefined on line 50, column 24 in settings/settings-
diagnostics.ftl. The problematic instruction: ---------- ==> list result.getDataEntries()
as entry [on line 50, column 17 in settings/settings-diagnostics.ftl] in user-directive
printDiagnosticResult [on line 64, column 25 in settings/settings-diagnostics.ftl] in
user-directive printDiagnosticResult [on line 76, column 13 in settings/settings-
diagnostics.ftl] in user-directive layout.landingbase [on line 1, column 1 in
settings/settings-diagnostics.ftl] ---------- Java backtrace for programmers: ----------
freemarker.core.InvalidReferenceException: Expression result.getDataEntries is undefined
on line 50, column 24 in settings/settings-diagnostics.ftl. at
freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:124) at
freemarker.core.TemplateObject.invalidTypeException(TemplateObject.java:134) at
freemarker.core.MethodCall._getAsTemplateModel(MethodCall.java:114) at
freemarker.core.Expression.getAsTemplateModel(Expression.java:89) at
freemarker.core.IteratorBlock.accept(IteratorBlock.java:94) at
freemarker.core.Environment.visit(Environment.java:208) at
如果我将上面的代码替换为:
<#if (result.dataPoints?keys?size > 0) >
<#list result.dataPoints?keys as key>
<tr>
<td width="35%">
<div>${key}</div>
</td>
<td width="45%">${result.dataPoints[key]}</td>
<td width="19%"> </td>
</tr>
</#list>
</#if>
知道如何遍历 map 以获得相同的顺序吗?
最佳答案
这应该可以解决问题:
<#if result.dataPoints?has_content >
<#list result.dataPoints.entrySet() as entry>
<tr>
<td width="35%">
<div>${entry.key}</div>
</td>
<td width="45%">${entry.value}</td>
<td width="19%"> </td>
</tr>
</#list>
</#if>
您可能还需要为 freemarker
模板配置设置对象包装器。像这样:
BeansWrapper beansWrapper = (BeansWrapper) ObjectWrapper.BEANS_WRAPPER;
beansWrapper.setExposeFields(true);
config.setObjectWrapper(beansWrapper);
其中 config
是 freemarker.template.Configuration
。如果您使用 Spring Framework 然后扩展 FreeMarkerConfigurer
:
public class FreeMarkerBeanWrapperConfigurer extends FreeMarkerConfigurer {
@Override
protected void postProcessConfiguration(Configuration config) throws IOException, TemplateException {
super.postProcessConfiguration(config);
BeansWrapper beansWrapper = (BeansWrapper) ObjectWrapper.BEANS_WRAPPER;
beansWrapper.setExposeFields(true);
config.setObjectWrapper(beansWrapper);
}
}
关于Freemarker:遍历 LinkedHashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17890966/
我正在使用 freemarker 生成一个 freemarker 模板。但我需要一些方法来转义 freemarker 标签。 我将如何逃脱 标签或 ${expression} ? 最佳答案 您也可以使
我想查看 freemarker 数据模型中的所有变量,就像 struts2 debug标记以显示值堆栈。 freemarker 有没有办法做到这一点? 最佳答案 没有通用的解决方案,但你可以尝试
如何在 freemarker 中连接字符串? 这不起作用。 ${str} = ${str} + ${" world"} ${foo("a")} 这里是在线评估器: http://fre
我创建了一个从 FreeMarker 实现 TemplateMethodModelEx 的类。假装 exec() 函数返回一个字符串: “你好 ${username}” 我将类分配给数据模型中的一个方
Freemarker中内置sort和sort_by是针对list的。如何在 Freemarker 中对对象进行排序?
我正在尝试测试是否可以在 FreeMarker 中将字符串转换为数字。例如,“123”和“3.14”可以转换,但“foo”不能。我知道我可以通过在字符串上使用 number 方法(例如 "123"?n
有没有办法更改 FreeMarker 模板中散列或容器中的子变量?例如,假设我有: {"name":"Bob", "city":"Detroit", "state":"OH"} 我想将状态更改为“MI
如何检查 freemarker 中请求属性的值? 我试过 但出现错误 -> 在行遇到“*” 任何人都可以帮忙吗? 最佳答案 这取决于 Web 应用程序框架,因为 FreeMarker 本身不公开请求
下面的模板有什么问题? package ${packageName} public interface ${entityName} { public void ${methodName}(${map
假设我们有一个简单的 Freemarker 宏: ${expr} ${expr} 给出: 一种 一种 我需要类似的东西 应该给出
在 freemarker 中,我如何确定特定值是否为数字。是否有任何特定方法可以检查给定值是否是 freemarker 中的数字?
我有一个免费标记列表,如下所示: 从上面的列表中,我只想要 v1 和 v2 的子列表。 我一直在徘徊以获取免费标记中的子列表。但是没能找到。 任何帮助将不胜感激。 最佳答案 如果您真的想根据索引制
我正在尝试编写一个 freemarker 模板,其中一个字段值作为数字传递,但我想将其作为字符串打印。目前我正在从 JSON 中获取值。 Freemarker 正在格式化我的情况不需要的数字。例如。如
我正在使用 Freemarker 构建一个站点,并且已经开始大量使用宏。我知道在 Freemarker 2.3 中,将空值作为参数传递给宏相当于根本不传递参数,因此我创建了一个名为“null”的全局变
我正在使用自定义 Magnolia 表单模块(在我公司内部构建)。当用户成功提交表单时,我想将用户重定向到成功页面。 这可以在模块本身中完成。但是,如果用户没有成功提交表单(例如缺少必填字段),我需要
我定义了包含一个参数的自定义宏。它可以是 String或 List . 是否可以检查它是否是数组? 最佳答案 好的,我发现有一些可用的方法,例如 is_... . 这是reference . 对我的情
我有一个 Web 应用程序,我需要手动获取 Freemarker 模板 - 该模板是通过库项目中的类获取的,但实际的 tpl 文件包含在 Web 应用程序类路径中。因此,有 2 个项目,一个是“taa
如何在 Freemarker 中处理 null 值?当数据中存在 null 值时,我在模板中遇到一些异常。 最佳答案 从 freemarker 2.3.7 开始,您可以使用 this syntax :
是否可以在 freemarker 中使用 and(&&) 或者是否必须使用嵌套的 if? 最佳答案 您可以在 Free Maker 中使用 && 作为逻辑运算符。请参阅Logical operat
freemarker比较数字什么最优雅? 这不会包括空检查吗? 如果我这样做 然后 freemarker 会提示不同的类型。 我是这样做的 但我想这不是做事的方式吗?如何在 freemarke
我是一名优秀的程序员,十分优秀!