我有一个模特:
public class Header {
private Boolean SERVICE;
}
控制器:
@RequestMapping("mymodel/Edit")
public ModelAndView mymodelEdit(
@ModelAttribute("mymodel") Mymodel mymodel,
@RequestParam String id) {
Mymodel old_mymodel = mymodelService.getMymodel(id);
Map<String, Object> map = new HashMap<String, Object>();
map.put("old_mymodel", old_mymodel);
return new ModelAndView("mymodel/mymodelEditView", "map", map);
}
JSP表单
<c:set var="old_mymodel" value="${map.old_mymodel}" />
<form:form method="POST action="/mymodel/Save" modelAttribute="mymodel">
<tr>
<td>Сервис :</td>
<td>
<form:checkbox path="SERVICE" value="${old_mymodel.SERVICE}">
</form:checkbox>
</td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="Save" /></td>
</tr>
</table>
</form:form>
我的问题:我无法将db中的值设置为表格值,即当SERVICE值为true时,不会选中复选框。
答案 0 :(得分:1)
您尝试访问模型的方式与您填充模型的方式不符。
我建议您将代码更改为:
@RequestMapping("mymodel/Edit")
public ModelAndView mymodelEdit(
@ModelAttribute("mymodel") Mymodel mymodel,
@RequestParam String id) {
Mymodel old_mymodel = mymodelService.getMymodel(id);
return new ModelAndView("mymodel/mymodelEditView", "model", old_mymodel);
}
和
假设Mymodel
看起来像:
public class Mymodel {
private Header old_header;
}
此外,您在模型的各个部分中使用的名称可能存在一些问题。我强烈建议您遵守JavaBean命名约定
答案 1 :(得分:0)
首先要将map的值设置为变量,如下所示
<c:set var="old_header" value="${map.old_mymodel}" />
所以你必须使用这个变量而不是map来访问SERVICE
布尔值。
因此应该像下面那样访问
<td><form:checkbox path="SERVICE" value="${old_header.SERVICE}"></form:checkbox></td>
而不是
<td><form:checkbox path="SERVICE" value="${old_mymodel.SERVICE}"></form:checkbox></td>
您正在使用old_mymodel
,
假设下面的代码返回正确的模型
Mymodel old_mymodel = mymodelService.getMymodel(id);