我是ftl(FreeMarker模板)的新手。我使用这样的模型映射从控制器发送对象列表
@RequestMapping(value="/xxx")
public String myMethod(ModelMap model){
List<MyDTO> dto = mymethods(); // I return some list objects in this method
model.addAttribute("dto",dto);
model.addAttribute("dtoLength",dto.size());
return "myview";
}
public class myDTO{
Public String var1;
Public String var2;
public String getVar1() {
return var1;
}
public void setVar1(String var1) {
this.var1 = var1;
}
public String getVar2() {
return var2;
}
public void setVar2(String var2) {
this.var2 = var2;
}
}
现在我尝试从我的ftl的javascript访问dto。我尝试了很多这样的方法:
var dto=${dto};
它说$ {....}内必须是字符串,整数,布尔值..等等等等
所以我想像这样迭代以获得我想要的东西
var valueIWanted;
if(${dtoLength}>0){
for(var i=0 ; i < ${dtoLength} ; i++){
ticketList[i] = ${ticket[i].var2};
}
}
但是我也无法以这种方式访问它。我应该在这里做什么?我认为我缺少语法。有人可以帮我吗?
您可以通过以下方式轻松访问modelMap数据:
<#list dto as dtoList>
<tr>
<td>${dtoList.var1}</td> <td>${dtoList.var1}</td>
</tr>
</#list>
您无需发送的长度DTO
,如果您将其用于其他目的,则可以使用它。
而且您只需迭代列表,就不需要for
循环。
看这个
如果要使用JavaScript访问数据,则可以在控制器上的页面加载时使用ajax请求,并向您发送包含数据的响应,然后处理该数据并在FTL页面上打印。如果可能的话,使用一些JavaScript框架使处理这样的请求变得容易和方便。
您仍然可以:var dtoList= "${dto}";
。不是没有报价。
参见答案。
对于检查是否为空:
[#if dto??]
//inside it write all your code
[/#if]
随着例子。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句