Пример флажка Spring MVC и флажков

Spring MVC флажок и пример флажков

В Spring MVC<form:checkbox /> используется для отображения поля флажка HTML, значения флажка жестко запрограммированы внутри страницы JSP; Хотя<form:checkboxes /> используется для отображения нескольких флажков, значения флажков генерируются во время выполнения.

В этом уроке мы покажем вам 3 различных способа отображения полей флажков HTML:

1. - Single Checkbox

Создайте классический одиночный флажок с логическим значением.

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…
Если вы хотите, чтобы 2 флажка со значением «Spring MVC» и «Struts 2» были отмечены по умолчанию, вы можете инициализировать свойство «favFramework» значением «Spring MVC». »И« Стойки 2 ». Для примера:

         //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. Validator

Простой валидатор формы проверяет, что свойство «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

Страница JSP, показывающая использование тегов формы Spring<form:checkbox /> и<form:checkboxes />.

Файл: 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 (10 КБ)