这应该是很基本的,但我无法找到关于它的网站什么,只是点点滴滴,似乎我不能够结合在一起..
我们在使用Spring MVC与freemarker的。 现在我想一个形式添加到我的页面,让我选择从预定义列表中的值(需要在后端数据库的访问)。
我的控制器:
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public ModelAndView get(@PathVariable Integer id) {
// stuff..
ModelAndView mav = new ModelAndView();
mav.addObject("targetObject", new TargetObject());
mav.addObject("options", Arrays.asList("a", "b", "c"));
mav.setViewName("someview");
return mav;
}
我发现freemarkers弹簧支撑spring.ftl
,似乎我应该使用<@spring.formSingleSelect>
我已经试过这样:
someView.ftl:
<#import "../spring.ftl" as spring />
<form action="somePath" method="POST">
<@spring.formSingleSelect "targetObject.type", "options", " " />
<input type="submit" value="submit"/>
</form>
所以targetObject.type被它似乎宏自动绑定。
但是,如何让我的选项进入freemarker的SeeQuence将使得宏可以创建选项?
现在,我得到:
Expected collection or sequence. options evaluated instead to freemarker.template.SimpleScalar on line 227, column 20 in spring.ftl.
The problematic instruction:
----------
==> list options as value [on line 227, column 13 in spring.ftl]
in user-directive spring.formSingleSelect [on line 53, column 9 in productBase/show.ftl]
----------
我也尝试:
<@spring.bind "${options}" />
并沿着这些线路,但没有成功更多的东西:
freemarker.core.NonStringException: Error on line 48, column 18 in someView.ftl
Expecting a string, date or number here, Expression options is instead a freemarker.template.SimpleSequence
谢谢你的帮助!