【发布时间】:2014-06-04 10:15:07
【问题描述】:
我很难说出这个问题的名字。我要解决的问题与here 所描述的问题非常相似,但是我想提交代表模型对象中映射的http请求参数而不是bean列表,并让框架(Spring)负责构建来自 http 请求参数的地图。任何人都可以建议最好的做法/最干净的方法吗?任何帮助将不胜感激。
目前我传递了两个字符串数组,然后将它们转换为地图,然后保存到模型对象中。我认为必须有更好的方法来做到这一点。
我正在使用 Spring MVC 和 Freemarker 进行视图渲染。
示例代码:
模型对象:
public class Foo {
private Map<String, String> barMap;
// other member variables...
}
查看fremarker模板:
<#list foo.barMap?keys as currKey>
<tr id="barList_${currKey_index}">
<td><input name="key" type="text" value="${currKey}"/></td>
<td><input name="value" type="text" value="${foo.barMap[currKey]}"/></td>
</tr>
</#list>
控制器:
@RequestMapping(value = "/foo", method = RequestMethod.POST)
public String foo (Model model,
@RequestParam(value="key", required=false) String[] keys,
@RequestParam(value="value", required=false) String[] values) {
Foo foo = new Foo();
Map<String, String> barMap = new HashMap<String, String>();
if (keys != null && values != null && keys.length == values.length) {
for (int i = 0; i < keys.length; i++) {
if (keys[i] != null
&& !keys[i].isEmpty()
&& values[i] != null
&& !values[i].isEmpty()) {
barMap.put(keys[i], values[i]);
}
}
}
foo.setBarMap(map);
return WebConstants.VIEW_FOO;
}
【问题讨论】:
标签: java spring spring-mvc freemarker