JSP在表单中设置布尔值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSP在表单中设置布尔值相关的知识,希望对你有一定的参考价值。
我有一个模型:
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时,不选中复选框。
答案
您尝试访问模型的方式与您填充模型的方式不符。
我建议你将代码更改为:
@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命名约定
另一答案
首先要将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);
以上是关于JSP在表单中设置布尔值的主要内容,如果未能解决你的问题,请参考以下文章