2017-06-21 4 views
0

私はSpringMVCを使用し、フォームからパラメータを読み込むために使用しています。春の豆にチェックボックスの値を挿入する。

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; 
} 

}

とフロントエンドの私はハンドルバーにテンプレートがあります:私は豆を受信したときに、Javaのコントローラで

<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> 

を、「名前」の値である私の豆は、このようになります適切に設定されていますが、チェックボックスから来るプレミアムはnullですか?

+0

Beanのプレミアムのタイプをブール値からストリングに変更して、2つのケースをチェックしてください:チェックボックスをオフにし、チェックボックスをオンにします。私が覚えているように、チェックされていないときは、パラメータはまったく送られません。 – alexey28

+0

あなたは[ '([spring tag lib](https://docs.spring.io/spring/docs/current/spring-framework-reference/html/spring-library/)の[ form-tld.html))?? – xerx593

+0

を使ってどのように書くべきですか? –

答えて

0

Booleanを使用しているため、ページが読み込まれるときに値をfalseに初期化する必要があります。だから、どちらかprivate boolean premiumpremiumChannelBean.javaprivate Boolean premium変更、ページの読み込みにfalseにOR

初期化します。

+0

私はブール値に変更するとこのエラーが発生します:java.lang.IllegalArgumentExceptionアイテム –

+0

大丈夫です。フィールドを値で初期化します。また、値が正しく設定されているかどうかをデバッグしてチェックしてください。 – Jobin

+0

奇妙なことは、ビューを編集するときに値が正しく設定されていることです。しかし、フィールドのチェックを外すと、Bean内で変更が表示されず、nullが返されます –

関連する問題