![](/img/trans.png)
[英]Struts 2 action's Boolean value is not binding from JSP after submitting the form
[英]JSP set boolean value in form
我有一個模特:
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}" />
因此您必須使用此變量not 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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.