簡體   English   中英

JSP在表單中設置布爾值

[英]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>&nbsp;</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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM