Exemple de case à cocher Spring MVC et de cases à cocher

Exemple de case à cocher et de cases à cocher Spring MVC

Dans Spring MVC,<form:checkbox /> est utilisé pour rendre un champ de case à cocher HTML, les valeurs de case à cocher sont codées en dur dans la page JSP; Alors que le<form:checkboxes /> est utilisé pour rendre plusieurs cases à cocher, les valeurs de case à cocher sont générées lors de l'exécution.

Dans ce didacticiel, nous vous montrons 3 façons différentes de rendre les champs de case à cocher HTML:

1. - Case à cocher unique

Générez une case à cocher unique classique, avec une valeur booléenne.

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

Checked by default…
Si vous définissez la valeur booléenne «receiveNewsletter» sur true, cette case sera cochée. Par exemple :

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

2. - Plusieurs cases à cocher

Générez plusieurs cases à cocher et codez en dur la valeur.

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

Checked by default…
Si vous voulez que la case à cocher avec la valeur «Java» soit cochée par défaut, vous pouvez initialiser la propriété «favLanguages» avec la valeur «Java». Par exemple :

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

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

        return cust;

    }

3. - Plusieurs cases à cocher

Générez une liste d'exécution pour la valeur des cases à cocher et associez-la à la balise de formulaire<form:checkboxes> de Spring.

        //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…
Si vous voulez que 2 cases à cocher avec la valeur «Spring MVC» et «Struts 2» soient cochées par défaut, vous pouvez initialiser la propriété «favFramework» avec la valeur «Spring MVC »Et« Struts 2 ». Par exemple:

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

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

        return cust;
    }

Note

Pour plusieurs cases à cocher, tant que la valeur «path» ou «property» est égale à l'un des «checkbox values – ${dynamic-list}», la case correspondante sera cochée automatiquement.

Exemple de case à cocher complète

Voyons un exemple complet de case à cocher Spring MVC:

1. Modèle

Une classe de modèle client pour stocker la valeur de la case à cocher.

Fichier: 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. Manette

Un SimpleFormController pour gérer la valeur de la case à cocher du formulaire.

Fichier: 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. Validateur

Un validateur de formulaire simple s'assure que la propriété «favLanguages» n'est pas vide.

Fichier: 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");
        }
    }
}

Fichier: message.properties

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

4. View

Une page JSP pour montrer l'utilisation des balises de formulaire de Spring<form:checkbox /> et<form:checkboxes />.

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

Utilisez JSTL pour parcourir la valeur des cases à cocher soumises et l'afficher.

Fichier: 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. Configuration de Spring Bean

Liez le tout ~



  

    
        
        

        
        
            
        
    

    
    
        
    

    
        
            /WEB-INF/pages/
        
        
            .jsp
        
    

6. Demo

SpringMVC-CheckBox-Example-1

Si l'utilisateur n'a sélectionné aucune valeur de case à cocher de langue lors de la soumission du formulaire, affichez et mettez en surbrillance le message d'erreur.

SpringMVC-CheckBox-Example-2

Si le formulaire est envoyé avec succès, affichez simplement la valeur des cases à cocher soumises.

SpringMVC-CheckBox-Example-3

Télécharger le code source

Téléchargez-le -SpringMVCForm-CheckBox-Example.zip (10 Ko)