我对阅读配对没什么问题。
所以我正在创造我的一对
private Pair<Integer, Integer> count(somethink) {
int c1 = 2;
int c2 = 4;
return new Pair<Integer, Integer>(c1, c2);
}
并通过java'发送'到ftl
mv.addObject("counted", count(somethink));
我不会写出它发送的所有内容,因为我认为这对我的问题不重要。所以我在“ftl”中收到它。然后我试着'读'它。
<#list counted?keys as key>
<a href="#offerOrderTab"><@spring.message "someMsg"/>(${key}/${counted[key]})</a>
</#list>
之后我收到错误
Expecting a string, date or number here, Expression x is instead a freemarker.ext.beans.SimpleMethodModel
正如我想你没有迭代对(或者我错了?)我知道它只包含一个键和一个值,但我仍然必须这样发送它,我认为它将是类似的迭代遍历map,在Java中我会使用pair.first()和pair.second()但它在ftl中不起作用(是的,我知道它不应该工作)。我还尝试使用?string
将其强制转换为String,但它也不起作用
答案 0 :(得分:1)
${counted.first()?xml}/${counted.second()?xml}
假设您的Java代码中有pair.first()
和second()
。
答案 1 :(得分:0)
我不确定Pair
的API看起来如何,但是对于?keys
,您可能不情愿地列出其方法。因此错误信息;您尝试打印方法本身,而不是其返回值。 (截至错误消息,因为那里没有x
,FreeMarker更新会有所帮助。)正如Caleryn所说,只需调用这两种方法即可。如果您需要列出此内容,则可能需要将其放入List
或数组中,除非Pair
实现List
(或者只是Collection
)或{{1 }}。或者,如果这是项目中的一个更大的问题,FreeMarker有这个可插入的配置组件Iterable
,你可以告诉FreeMarker将ObjectWrapper
- s视为列表,以及如何处理。这需要一些更深入地了解FreeMarker。