Java 无法将复选框值注入Springbean

Java 无法将复选框值注入Springbean,java,spring,jsp,spring-mvc,handlebars.js,Java,Spring,Jsp,Spring Mvc,Handlebars.js,我正在使用SpringMVC和tring从表单读取参数。我的豆子看起来像这样: public class ChannelBean { private Integer id; private Integer siteId; private String name; private Boolean active; private Boolean premium; public Integer getId() { return id; } public void setId(Intege

我正在使用SpringMVC和tring从表单读取参数。我的豆子看起来像这样:

public class ChannelBean {

private Integer id;
private Integer siteId;
private String name;
private Boolean active;
private Boolean premium;


public Integer getId() {
    return id;
}
public void setId(Integer id) {
    this.id = id;
}

public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}

public Boolean getActive() {
    return active;
}
public void setActive(Boolean active) {
    this.active = active;
}
public Boolean getPremium() {
    return premium;
}
public void setPremium(Boolean premium) {
    this.premium = premium;
}
public Integer getSiteId() {
    return siteId;
}
public void setSiteId(Integer siteId) {
    this.siteId = siteId;
}
}

在前端,我有把手模板:

<script id="editFormTemplate" type="text/x-handlebars-template">
    <form id="channelForm" class="form-horizontal" action="/admin/channel/save.action" method="POST">
        <input type="hidden" readonly="readonly" name="siteId" value="${selectedSiteId}">
        <input type="hidden" readonly="readonly" name="id" value="{{id}}">
        <div class="form-group">
            <label class="col-sm-2 control-label channelName">Name<span class="required">*</span></label>
                <div class="col-sm-10">
                    <input class="form-control" type="text" name="name" value="{{name}}" />
                </div>
            </div>
            <div class="form-group">
                <label class="col-sm-2 control-label">Premium</label>
                <div class="col-sm-10">
                    <input type="checkbox" name="premium" {{#if premium}}checked{{/if}} value="{{premium}}">
                </div>
            </div>  
        <cms:csrfToken />
        <div class="modal-footer">
            <button type="submit" class="btn btn-edit btn-primary has-spinner submitEditButton">Ok<span class="spinner"><i class="fa fa-refresh fa-spin"></i></span></button>
            <button type="button" class="btn btn-warning" data-dismiss="modal">Cancel</button>
        </div>
    </form>
</script>

名字*
保险费
好啊
取消

在Java中的控制器中,当我收到Bean时,“name”值设置正确,但来自复选框的premium值为null?

由于您使用的是
布尔值
,因此需要在页面加载时将值初始化为
false
。因此,在页面加载时将
premium
初始化为
false
,或者


将ChannelBean.java中的
private Boolean premium
更改为
private Boolean premium

尝试将bean中的premium类型从布尔更改为字符串,并选中两种情况:未选中和选中复选框。我记得当它被取消选中时,根本不会发送任何参数。您是否可以选择使用“”(从)?我应该如何使用编写它?您必须声明/导入:
(在jsp的顶部/底部),您必须使用
而不是(普通)
标记…并使用布尔绑定(“高级”),您可以尝试:
(而不是
标记)…当我更改为布尔值时,会出现以下错误:java.lang.IllegalArgumentException当我尝试查询itemsokay时。然后用一个值初始化该字段。还要调试并检查值是否正确填充奇怪的是,当我打开编辑视图时,值设置正确,这意味着bean从数据库中正确获取。但当我取消选中该字段时,该更改在bean中不可见,并且其发送为空。另一个问题是,当我取消选中该复选框时,其值不会更改