2017-06-21 55 views
0

我使用SpringMVC和tring從窗體讀取參數。我的豆看起來是這樣的:不能注入spring bean的複選框值

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中的控制器當我收到豆,「名」值正確設置,但來自複選框的溢價爲空?

+0

嘗試更改您的bean中的premium類型,從Boolean到String並檢查兩種情況:未選中和已選中複選框。正如我記得未選中時一樣,根本沒有發送任何參數。 – alexey28

+0

您可以選擇使用''(來自[spring tag lib](https://docs.spring.io/spring/docs/current/spring-framework-reference/html/spring- form-tld.html))?? – xerx593

+0

我應該如何使用編寫它? –

回答

0

由於您使用的是Boolean,因此您需要在頁面加載時將值初始化爲false。因此,無論在初始化的ChannelBean.java在頁面加載premiumfalse OR

變化private Boolean premiumprivate boolean premium

+0

當我改變爲布爾我得到這個錯誤:java.lang.IllegalArgumentException異常當我嘗試查詢物品 –

+0

沒問題。然後用一個值初始化該字段。也調試和檢查值是否正確填充 – Jobin

+0

奇怪的事情是,當我打開編輯視圖,值是否設置正確,這樣就意味着豆是從數據庫中獲取正確的。但是,當我取消場,改變是不可見的內部豆及其派出空 –