![](/img/trans.png)
[英]Handlebars.js: Is it possible to pass multiple hashes as arguments to a Handlebars helper?
[英]Pass Java object to Handlebars.js helper
我想知道是否有可能通过Handlebars帮助器方法将在Spring MVC应用程序的控制器中创建的Java对象传递给客户端。
例如,如果在控制器中创建一个地图并将其传递给我的视图:
public ModelAndView myController(HttpServletRequest req) {
ModelAndView mav = new ModelAndView("/views/myview.jsp");
Map<Long, String> map = new HashMap<>();
map.put(1L, "a");
map.put(2L, "b");
mav.addObject("MyMap", map);
return mav;
}
...而我的看法是这样的:
<html>
<head>
</head>
<body>
<!-- I want to pass my map to this helper function -->
<div id="mymap">{{buildStringFromMap "MyMap"}}</div>
</body>
</html>
然后在Javascript中使用实际的Handlebars帮助程序来对该地图进行操作,如下所示:
Handlebars.registerHelper('buildStringFromMap', function (myMap) {
var a = myMap[1L]; // a == "a" here
// do whatever with the map
});
显然,这是行不通的,因为我实际上没有传递我的Map对象,而是传递了一个字符串“ MyMap”。 有没有一种方法可以传递实际的Map对象?
您可以将整个Map传递到HTML中,然后进行迭代并使用您的帮助器(aCustomHelper)。 “ @key”关键字指的是地图的键,“ this”关键字指的是地图的值(example-map-object)。
{{#each example-map-object}}
<tr>
<td>{{{this}}}</td>
<td>{{{@key}}}</td>
<td>{{{aCustomHelper @key this}}}</td>
</tr>
{{/each}}
在下面的示例中,您可以看到如何通过键和值访问Set对象:
<select>
{{#each example-set-object}}
<option value="{{@value}}">{{@key}}</option>
{{/each}}
</select>
在下面的示例中,您可以看到如何通过键值访问地图,这确实非常方便:
{{#each example-map-object}}
<tr>
<td>{{{this.id}}}</td>
<td>{{{this.customerName}}}</td>
<td>{{{this.date}}}</td>
</tr>
{{/each}}
因此,对您的问题的回答是,是的,您当然可以做您想做的事情,并将整个地图作为参数传递给您的辅助方法。
{{yourHelper example-map-object}}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.