Рубрики
Без рубрики

Отправка формы с проверкой весенней загрузки

Вступление В этом руководстве рассказывается о том, как создать и отправить форму, а также о том, как подтвердить наш regi… Помечено java, springframework, thymeleaf.

В этом руководстве рассказывается о том, как создать и отправить форму, а также о том, как проверить нашу регистрационную форму.

  • IDE – Затмение

  • JDK 1.8 или более поздней версии

  • Уровень 4+ или Maven 3.2+

  • Набор инструментов Spring (STS) или вы можете использовать Spring Initializr

Вы можете обратиться к исходному коду ниже. Вы можете обратиться к исходному коду ниже.

Шаг 1. Создание проекта

  • Файл → Новый → Весенний Стартовый проект
  • Заполните необходимую информацию и добавьте зависимости.
  • Исследователь проектов выглядит так.

Шаг 2. Давайте начнем кодировать

Давайте начнем кодировать

package com.reytech.demo.model;

import java.time.LocalDate;
import java.util.List;
import javax.validation.constraints.Email;
import javax.validation.constraints.Max;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Past;
import javax.validation.constraints.Positive;
import javax.validation.constraints.Size;
import org.springframework.format.annotation.DateTimeFormat;

public class Student {

    @NotEmpty(message = "{validation.name.NotEmpty}")
    @Size(min = 2, max = 50, message = "{validation.name.Size}")
    private String name;

    @NotNull(message = "{validation.age.NotNull}")
    @Positive(message = "{validation.age.Positive}")
    @Max(value = 18, message = "{validation.age.Maximum}")
    private Integer age;

    @NotEmpty(message = "{validation.email.NotEmpty}")
    @Email(message = "{validation.email.Type}")
    private String email;

    @NotEmpty(message = "{validation.subjects.NotEmpty}")
    private List  subjects;

    @NotNull(message = "{validation.birthDate.NotNull}")
    @Past(message = "{validation.birthDate.Past}")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate birthDate;

    @NotEmpty(message = "{validation.gender.NotEmpty}")
    private String gender;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public LocalDate getBirthDate() {
        return birthDate;
    }

    public void setBirthDate(LocalDate birthDate) {
        this.birthDate = birthDate;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public List  getSubjects() {
        return subjects;
    }

    public void setSubjects(List  subjects) {
        this.subjects = subjects;
    }

}
  • Мы будем хранить информацию о студентах в Student.class модель.

  • И @Size, @NotEmpty, @Email и т. Д. Предназначены для проверки ввода, когда пользователь вводит ввод с ошибкой.

  • Мы будем использовать пользовательское сообщение, создав message.properties. , вы можете увидеть пользовательское сообщение в файле messages.properties.)

, вы можете увидеть пользовательское сообщение в файле messages.properties.)

  • Мы установим пользовательские сообщения.
validation.name.NotEmpty=Please fill in Name
validation.name.Size=Name size must be between 2 and 30
validation.name.Pattern=Name must be only characters
validation.age.NotNull=Please fill in Age
validation.age.Maximum=Age must be under 18
validation.age.Positive=Age must not be negative value and 0
validation.age.Pattern=Age must be only numbers
validation.email.NotEmpty=Please fill in Email
validation.email.Type=Please fill in valid Email
validation.birthDate.NotNull=Please fill in Birth Date
validation.birthDate.Past=Please fill in valid Birth Date
validation.subjects.NotEmpty=Please select Subjects
validation.gender.NotEmpty=Please select Gender

Мы установим пользовательские сообщения.

  • Для обработки message.properties необходимы источник сообщения и LocalValidatorFactoryBean.
package com.reytech.demo;

import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;

@Configuration
public class AppConfiguration {

    @Bean
    public MessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("classpath:messages");
        messageSource.setDefaultEncoding("UTF-8");
        return messageSource;
    }

    @Bean
    public LocalValidatorFactoryBean validator() {
        LocalValidatorFactoryBean bean = new LocalValidatorFactoryBean();
        bean.setValidationMessageSource(messageSource());
        return bean;
    }
}

Источник сообщения

package com.reytech.demo.constant;

public enum Gender {
   MALE,FEMALE,OTHER
}

Источник сообщения

package com.reytech.demo.constant;

public enum Subject {
    MYANMAR("Myanmar"),
    ENGLISH("English"),
    MATH("Math"),
    CHEMISTRY("Chemistry"),
    PHYSICS("Physics"),
    BIO("Bio"),
    ECO("Eco");

    private final String value;

    private Subject(String value) {
        this.value = value;
    }

    public String getValue() {
        return value;
    }
}

Источник сообщения

package com.reytech.demo.controller;

import javax.validation.Valid;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import com.reytech.demo.constant.Gender;
import com.reytech.demo.constant.Subject;
import com.reytech.demo.model.Student;

@Controller
public class HomeController {

    @GetMapping("/form")
    public String showForm(Model model) {
        Student student = new Student();
        model.addAttribute("student", student);
        model.addAttribute("gender_value", Gender.values());
        model.addAttribute("subject_value", Subject.values());
        return "form";
    }

    @PostMapping("/form/result")
    public String submitForm(@Valid Student student, BindingResult bindingResult, Model model) {
        if (bindingResult.hasErrors()) {
            model.addAttribute("student", student);
            model.addAttribute("gender_value", Gender.values());
            model.addAttribute("subject_value", Subject.values());
            return "form";
        } else {
            model.addAttribute("result", student);
            return "result";
        }
    }

    @GetMapping("/back")
    public String backHome() {
        return "redirect:/form";
    }

}

Контроллер используется для обработки запросов GET/POST в конечной точке/HTTP.

  • Метод showForm() состоит в том, чтобы достичь localhost:/8080/формы в качестве запроса на ПОЛУЧЕНИЕ и вернуть представление, которое form.html с помощью тимелифа. Он использует объект модели для отображения нового объекта учащегося в шаблоне представления. Значения пола и предметов переносятся с помощью атрибута model.add и отображают результат в result.html .

  • Метод Saveform() заключается в том, чтобы достичь локального хоста: 8080/форма/результат в качестве запроса POST при отправке данных пользователем. Отправленные данные сохраняются в разделе “результат” и переносятся с помощью атрибута model.AddAttribute. И этот метод возвращает представление, которое result.html но он возвращается обратно к form.html при отправке данных возникают ошибки.

И этот метод возвращает представление, которое result.html но он возвращается обратно к form.html при отправке данных возникают ошибки.

  • Мы создадим форму для заполнения данных form.html .



   
      
      Form_Registration
      
      
      
      
      
      
      
   
   
      

Form Registration

Name Error
Age Error
Email Error
BirthDate Error

Subjects

Subject Error

Gender

Gender Error

Мы создадим форму для заполнения данных form.html .

  • Мы создадим страницу для отображения представленных данных в result.html .



   
      
      Result
      
      
      
      
      
   
   
      

Result

Title Value
Student Name
Age
Email
Date of Birth
Subjects
Gender

Если вам нужна дополнительная информация о шаблонах Thymeleaf, загляните в Учебное пособие по Thymeleaf .

Шаг 3. Давайте запустим наше приложение

  1. Давайте перейдем на локальный хост:8080/форма, и мы увидим следующую форму.

  2. Давайте отправим некоторые данные об ошибках, а затем мы сможем увидеть сообщения об ошибках.

  3. Давайте представим правильные данные.

  4. Теперь мы можем увидеть результат в localhost:8080/форма/результат.

Оригинал: “https://dev.to/reytech-lesson/form-submitting-with-spring-boot-validation-5clg”