Stu*_*art 1 java spring freemarker spring-mvc
我努力为这个问题命名.我试图解决的问题与此处描述的问题非常相似,但我没有提交bean的列表,而是提交表示模型对象中的地图的http请求参数,让框架(Spring)负责构建地图来自http请求参数.有人可以建议最好的做法/最干净的方法吗?任何帮助将非常感激.
目前我传递两个String数组,然后在保存到模型对象之前将它们转换为映射.我认为必须有一个更好的方法来做到这一点.
我使用Spring MVC和Freemarker进行视图渲染.
说明代码:
模型对象:
public class Foo {
private Map<String, String> barMap;
// other member variables...
}
Run Code Online (Sandbox Code Playgroud)
查看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>
Run Code Online (Sandbox Code Playgroud)
控制器:
@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;
}
Run Code Online (Sandbox Code Playgroud)
直接使用map来绑定
@RequestMapping(value = "/foo", method = RequestMethod.POST)
public String foo (@RequestParam Map<String,String> allRequestParams ,Model model){
}
Run Code Online (Sandbox Code Playgroud)
并在Foo中放置getter和setter以获取地图.
然后地图会自动填充
| 归档时间: |
|
| 查看次数: |
11526 次 |
| 最近记录: |