Spring MVCのチェックボックスとチェックボックスの例

Spring MVCチェックボックスとチェックボックスの例

Spring MVCでは、<form:checkbox />を使用してHTMLチェックボックスフィールドをレンダリングします。チェックボックス値はJSPページ内にハードコードされています。 <form:checkboxes />は複数のチェックボックスをレンダリングするために使用されますが、チェックボックスの値は実行時に生成されます。

このチュートリアルでは、HTMLチェックボックスフィールドをレンダリングする3つの異なる方法を示します。

1. –単一のチェックボックス

ブール値を使用して、古典的な単一のチェックボックスを生成します。

public class Customer{
    boolean receiveNewsletter;
    //...
}

Checked by default…
receiveNewsletter」ブール値をtrueに設定すると、このチェックボックスがオンになります。 例えば ​​:

public class Customer{
    boolean receiveNewsletter = true;
    //...
}

2. –複数のチェックボックス

複数のチェックボックスを生成し、値をハードコーディングします。

public class Customer{
    String [] favLanguages;
    //...
}
Java
C++
.Net

Checked by default…
値「Java」のチェックボックスをデフォルトでオンにしたい場合は、「favLanguages」プロパティを値「Java」で初期化できます。 例えば ​​:

        //SimpleFormController...
        @Override
    protected Object formBackingObject(HttpServletRequest request)
        throws Exception {

        Customer cust = new Customer();
        cust.setFavLanguages(new String []{"Java"});

        return cust;

    }

3. –複数のチェックボックス

チェックボックス値のランタイムリストを生成し、それをSpringのフォームタグ<form:checkboxes>にリンクします。

        //SimpleFormController...
    protected Map referenceData(HttpServletRequest request) throws Exception {

        Map referenceData = new HashMap();
        List webFrameworkList = new ArrayList();
        webFrameworkList.add("Spring MVC");
        webFrameworkList.add("Struts 1");
        webFrameworkList.add("Struts 2");
        webFrameworkList.add("Apache Wicket");
        referenceData.put("webFrameworkList", webFrameworkList);

        return referenceData;
    }

Checked by default…
値が「SpringMVC」の2つのチェックボックスを作成し、「Struts 2」がデフォルトでオンになっている場合は、「favFramework」プロパティを値「SpringMVC」で初期化できます。 」および「Struts2」。 例えば ​​:

         //SimpleFormController...
        @Override
    protected Object formBackingObject(HttpServletRequest request)
        throws Exception {

        Customer cust = new Customer();
        cust.setFavFramework(new String []{"Spring MVC","Struts 2"});

        return cust;
    }

Note

複数のチェックボックスの場合、「path」または「property」の値が「checkbox values – ${dynamic-list}」のいずれかと等しい限り、一致したチェックボックスが自動的にチェックされます。

完全なチェックボックスの例

Spring MVCの完全なチェックボックスの例を考えてみましょう。

1. モデル

チェックボックス値を保存する顧客モデルクラス。

ファイル:Customer.java

package com.example.customer.model;

public class Customer{

    //checkbox
    boolean receiveNewsletter = true; //checked it
    String [] favLanguages;
    String [] favFramework;

    public String[] getFavFramework() {
        return favFramework;
    }
    public void setFavFramework(String[] favFramework) {
        this.favFramework = favFramework;
    }
    public boolean isReceiveNewsletter() {
        return receiveNewsletter;
    }
    public void setReceiveNewsletter(boolean receiveNewsletter) {
        this.receiveNewsletter = receiveNewsletter;
    }
    public String[] getFavLanguages() {
        return favLanguages;
    }
    public void setFavLanguages(String[] favLanguages) {
        this.favLanguages = favLanguages;
    }
}

2. コントローラ

フォームチェックボックスの値を処理するSimpleFormController。

ファイル:CheckBoxController.java

package com.example.customer.controller;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;
import com.example.customer.model.Customer;

public class CheckBoxController extends SimpleFormController{

    public CheckBoxController(){
        setCommandClass(Customer.class);
        setCommandName("customerForm");
    }

    @Override
    protected Object formBackingObject(HttpServletRequest request)
        throws Exception {

        Customer cust = new Customer();

        //Make "Spring MVC" and "Struts 2" as default checked value
        cust.setFavFramework(new String []{"Spring MVC","Struts 2"});

        //Make "Java" as default checked value
        cust.setFavLanguages(new String []{"Java"});

        return cust;

    }

    @Override
    protected ModelAndView onSubmit(HttpServletRequest request,
        HttpServletResponse response, Object command, BindException errors)
        throws Exception {

        Customer customer = (Customer)command;
        return new ModelAndView("CustomerSuccess","customer",customer);

    }

    //Generate the data for web framework multiple checkboxes
    protected Map referenceData(HttpServletRequest request) throws Exception {

        Map referenceData = new HashMap();
        List webFrameworkList = new ArrayList();
        webFrameworkList.add("Spring MVC");
        webFrameworkList.add("Struts 1");
        webFrameworkList.add("Struts 2");
        webFrameworkList.add("Apache Wicket");
        referenceData.put("webFrameworkList", webFrameworkList);

        return referenceData;

    }
}

3. バリデーター

単純なフォームバリデーターは、「favLanguages」プロパティが空でないことを確認します。

ファイル:CheckBoxValidator.java

package com.example.customer.validator;

import org.springframework.validation.Errors;
import org.springframework.validation.Validator;
import com.example.customer.model.Customer;

public class CheckBoxValidator implements Validator{

    @Override
    public boolean supports(Class clazz) {
        //just validate the Customer instances
        return Customer.class.isAssignableFrom(clazz);
    }

    @Override
    public void validate(Object target, Errors errors) {

        Customer cust = (Customer)target;

        if(cust.getFavLanguages().length==0){
            errors.rejectValue("favLanguages", "required.favLanguages");
        }
    }
}

ファイル:message.properties

required.favLanguages = Please select at least a favorite programming language!

4. View

Springのフォームタグ<form:checkbox />および<form:checkboxes />の使用法を示すJSPページ。

ファイル:CustomerForm.jsp

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>






    

Spring's form checkbox example

Subscribe to newsletter? :
Favourite Languages : Java C++ .Net
Favourite Web Frameworks :

JSTLを使用して、送信されたチェックボックスの値をループし、表示します。

ファイル:CustomerSuccess.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>



    

Spring's form checkbox example

Receive Newsletter : ${customer.receiveNewsletter}
Favourite Languages : []
Favourite Web Frameworks : []

5. Spring Beanの構成

それをすべてリンクしてください〜



  

    
        
        

        
        
            
        
    

    
    
        
    

    
        
            /WEB-INF/pages/
        
        
            .jsp
        
    

6. Demo

ページへのアクセス - http://localhost:8080/SpringMVCForm/checkbox.htm

SpringMVC-CheckBox-Example-1

ユーザーがフォームの送信中に言語チェックボックスの値を選択しなかった場合は、エラーメッセージを表示して強調表示します。

SpringMVC-CheckBox-Example-2

フォームが正常に送信された場合、送信されたチェックボックスの値を表示するだけです。

SpringMVC-CheckBox-Example-3

ソースコードをダウンロード

ダウンロード–SpringMVCForm-CheckBox-Example.zip(10KB)