我们如何在Freemarker中已经创建的SequenceModel实例中添加值?
例如:我有以下创建List(SequenceModel)的方法:
<#assign x = ["red", 16, "blue", "cyan"]>
Run Code Online (Sandbox Code Playgroud)
现在有办法,我可以在上面的列表中添加另一种颜色吗?
Lau*_*eyn 44
您必须通过连接x和仅包含新元素的序列来创建新序列:
<#assign x = x + [ "green" ] />
Run Code Online (Sandbox Code Playgroud)
Jun*_*awa 14
FreeMarker基本上是一次写入语言.它非常努力地使得无法操纵数据,包括修改数组或地图等.
但是,您可以通过连接和重新分配来解决此问题:
<#assign my_array = [] />
<#list 1..10 as i>
<#assign my_array = my_array + ["value " + i] />
</#list>
Run Code Online (Sandbox Code Playgroud)
这应该导致包含"值1"到"值10"的数组.如果这看起来不那么优雅,那是因为它的意图是这样的.从FreeMarker的意识形态来看,一旦你开始构建数组等,你就已经超越了模板语言应该做的事情,以及模型,控制器,辅助类等应该在Java代码中做的事情.越偏离这一观点,在FreeMarker中工作会变得非常令人沮丧.
来自http://freemarker.sourceforge.net/docs/app_faq.html#faq_modify_seq_and_map:
FreeMarkes模板语言不支持修改序列/哈希.它用于显示已经计算的东西,而不是用于计算数据.保持模板简单.但是不要放弃,你会看到一些建议和伎俩.
洛朗的回答是正确的并且完全可以接受。但您也可以使用简写添加值:
<#assign x += ["green"]>
Run Code Online (Sandbox Code Playgroud)
现在序列将如下所示:
Sequence (5)
0 = "red" (String)
1 = 16 (BigDecimal)
2 = "blue" (String)
3 = "cyan" (String)
4 = "green" (String)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34325 次 |
| 最近记录: |