最近在用spring mvc标签中遇到些问题,很多网上的思路文不对题。
现就form:select设置默认值做一记录。
一、前端jsp语法如下:
<form:select path="papermode" items="${papermodeList}" itemValue="key1" itemLabel="val1" />
上面的语法含义为,列表显示papermode(”试卷模式" ,papermode 为属性名称);${papermodeList}为后台获取的papermode对象列表(其实papermode 仅是名称,对象实际上为Config,其属性为{key1,val1...},此处很奇妙,Config对象并未直接出现;itemValue="key1" ,表示select 中option的值为config.key1的实际值;itemLabel="val1",则表示option中显示的值。
生成的结果如下:
<select id="papermode" name="papermode">
<option value="single" selected="selected">一套试卷</option>
<option value="ab">AB卷</option>
</select>
二、后台代码
@RequestMapping(value = "/exam_man")
public String exam_man(@ModelAttribute("examproject") T_examproject examproject,HttpSession session, Model model) {
ConfigModule cm = new ConfigModule("OA","考试出题方式");
model.addAttribute("papermodeList",cm.getConfigdetailList());
examproject.setPapermode("single");
return "/exam/exam_man";
}
我在下面做个图示
三、还有一步,JSP的FORM
<form:form id="fm" method="post" modelAttribute="examproject" >
在spring mvc 中 modelAttribute是少不了的 其中modelAttribute="examproject" 就是为了使用后台辛苦准备的@ModelAttribute("examproject") T_examproject examproject 数据。然后你就可以使用<form:textarea path="title" rows="3" cols="48"/>这些东东,有值就显示,无值则请你录入。
四、注意事项
见到很多例题
- 如 Map<Integer, String> ballMap = new HashMap<Integer, String>();
- ballMap.put(1, "篮球");
- ballMap.put(2, "足球");
- ballMap.put(3, "乒乓球");
- ballMap.put(4, "羽毛球");
- ballMap.put(5, "排球");
- map.put("ballMap", ballMap);
其中 ballMap是简单对象(List<String>),不好用,还要专门准备数据或修改格式。你可以参见我的方法,直接放入复杂对象List,然后在itemValue,itemLabel直接写入参数的名值即可,但不清楚是否可以嵌套复杂对象。呵呵。再次声明,我的itemValue 的key1是Config的属性,在这里Config并没有直接出现。
spring mvc 标签库语法参见
http://docs.spring.io/spring/docs/2.0.x/reference/spring-form.tld.html#spring-form.tld.options