【问题标题】:JSP set boolean value in formJSP在表单中设置布尔值
【发布时间】:2014-06-29 10:37:34
【问题描述】:

我有一个模型:

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 时,未选中复选框。

【问题讨论】:

    标签: java jsp spring-mvc


    【解决方案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 命名约定

    【讨论】:

      【解决方案2】:

      首先要将 map 的值设置为如下所示的变量

      <c:set var="old_header" value="${map.old_mymodel}" />
      

      因此您必须使用此变量而不是映射来访问 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);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-06-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多