1

我在阅读配对方面没有什么问题。

所以我正在创造我的一对

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但它也不起作用

4

2 回答 2

2

你有没有尝试过?

${counted.first()?xml}/${counted.second()?xml} 

假设pair.first()second()在您的 Java 代码中工作。

于 2013-11-07T17:25:02.417 回答
0

我不确定 API 的Pair外观如何,但?keys您可能不情愿地列出它的方法。因此出现错误消息;您尝试打印方法本身,而不是其返回值。(对于损坏的错误消息,因为那里不x存在,所以 FreeMarker 更新会有所帮助。)所以正如 Caleryn 所说,只需调用这两个方法。如果你需要列出这个东西,你可能需要把它放到一个Listor 数组中,除非Pair实现List(甚至只是Collection)或Iterable. 或者,如果这是您项目中更大的问题,FreeMarker 有这个可插入的配置组件,ObjectWrapper您可以告诉 FreeMarker 将Pair-s 视为列表,以及如何处理。不过,这需要对 FreeMarker更深入的了解。

于 2013-11-07T21:51:14.527 回答