Spring MVC-Kontrollkästchen und Kontrollkästchen Beispiel

Beispiel für Spring MVC-Kontrollkästchen und Kontrollkästchen

In Spring MVC wird<form:checkbox /> zum Rendern eines HTML-Kontrollkästchenfelds verwendet. Die Kontrollkästchenwerte sind auf der JSP-Seite fest codiert. Während<form:checkboxes /> zum Rendern mehrerer Kontrollkästchen verwendet wird, werden die Kontrollkästchenwerte zur Laufzeit generiert.

In diesem Tutorial zeigen wir Ihnen drei verschiedene Möglichkeiten, HTML-Kontrollkästchenfelder zu rendern:

1. - Einzelnes Kontrollkästchen

Generieren Sie ein klassisches einzelnes Kontrollkästchen mit einem booleschen Wert.

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

Checked by default…
Wenn Sie den booleschen Wert "receiveNewsletter" auf "true" setzen, wird dieses Kontrollkästchen aktiviert. Zum Beispiel :

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

2. - Mehrere Checkboxen

Generieren Sie mehrere Kontrollkästchen und codieren Sie den Wert fest.

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

Checked by default…
Wenn Sie das Kontrollkästchen mit dem Wert "Java" aktivieren möchten, können Sie die Eigenschaft "favLanguages" mit dem Wert "Java" initialisieren. Zum Beispiel :

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

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

        return cust;

    }

3. - Mehrere Checkboxen

Generieren Sie eine Laufzeitliste für den Wert der Kontrollkästchen und verknüpfen Sie sie mit dem Formular-Tag<form:checkboxes>von 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…
Wenn Sie 2 Kontrollkästchen mit dem Wert "Spring MVC" aktivieren möchten und "Struts 2" standardmäßig aktiviert sind, können Sie die Eigenschaft "favFramework" mit dem Wert "Spring MVC" initialisieren ”Und“ Struts 2 ”. Zum Beispiel:

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

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

        return cust;
    }

Note

Bei mehreren Kontrollkästchen wird das übereinstimmende Kontrollkästchen automatisch aktiviert, solange der Wert „path“ oder „property“ einem der Werte „checkbox values – ${dynamic-list}“ entspricht.

Vollständiges Beispiel für ein Kontrollkästchen

Schauen wir uns ein vollständiges Beispiel für ein Spring MVC-Kontrollkästchen an:

1. Modell

Eine Kundenmodellklasse zum Speichern des Kontrollkästchenwerts.

Datei: 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. Regler

Ein SimpleFormController zum Behandeln des Formular-Kontrollkästchenwerts.

Datei: 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. Validator

Ein einfacher Formularvalidator stellt sicher, dass die Eigenschaft "favLanguages" nicht leer ist.

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

Datei: message.properties

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

4. View

Eine JSP-Seite, auf der die Verwendung der Spring-Formular-Tags<form:checkbox /> und<form:checkboxes /> angezeigt wird.

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

Verwenden Sie JSTL, um den übergebenen Kontrollkästchenwert zu durchlaufen und anzuzeigen.

Datei: 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 Konfiguration

Verknüpfe alles ~



  

    
        
        

        
        
            
        
    

    
    
        
    

    
        
            /WEB-INF/pages/
        
        
            .jsp
        
    

6. Demo

Greifen Sie auf die Seite zu -http://localhost:8080/SpringMVCForm/checkbox.htm

SpringMVC-CheckBox-Example-1

Wenn der Benutzer beim Absenden des Formulars keine Kontrollkästchen für die Sprache aktiviert hat, zeigen Sie die Fehlermeldung an und markieren Sie sie.

SpringMVC-CheckBox-Example-2

Wenn das Formular erfolgreich gesendet wurde, zeigen Sie einfach den Wert der gesendeten Kontrollkästchen an.

SpringMVC-CheckBox-Example-3

Quellcode herunterladen

Laden Sie es herunter -SpringMVCForm-CheckBox-Example.zip (10 KB)