[JAVA] Enregistrer la conversion de type de paramètre de demande avec SpringBoot + MVC

Demande de conversion automatique de type de paramètre par Spring MVC

Spring MVC convertit les paramètres de demande dans le type approprié. La conversion de type par défaut est fournie, donc si vous souhaitez la stocker dans un autre type (stocké dans votre propre classe, un type différent du type qui se résout automatiquement), enregistrez-la dans la conversion de type dans les paramètres Spring MVC. Faire.

Exemple: conversion de l'entrée de date en java.time.LocalDate (java.util.Date par défaut)

SampleModelController.java


import java.time.LocalDate;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import lombok.Data;

@Controller
@RequestMapping("/sample")
public class SampleModelController {
	@GetMapping
	public ModelAndView sample(ModelAndView mnv, @ModelAttribute SampleModel model) {
		mnv.addObject("model", model);
		return mnv;
	}

	@Data
	public static class SampleModel {
		private String name;
		private LocalDate birthday;
	}
}

L'anniversaire de SampleModel est de type LocalDate. Cette fois, tous les paramètres seront convertis dans les paramètres Spring MVC en général.

WebConfig.java


import org.springframework.context.annotation.Configuration;
import org.springframework.format.FormatterRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebConfig implements WebMvcConfigurer {
	@Override
	public void addFormatters(FormatterRegistry registry) {
		registry.addConverter(new StringToLocalDate());
	}
}

StringToLocalDate est une classe qui hérite de ʻorg.springframework.core.convert.converter.Converter`.

StringToLocalDate.java


import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

import org.springframework.core.convert.converter.Converter;

public class StringToLocalDate implements Converter<String, LocalDate> {

	@Override
	public LocalDate convert(String source) {
		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/M/d");
		return LocalDate.parse(source, formatter);
	}

}

Recommended Posts

Enregistrer la conversion de type de paramètre de demande avec SpringBoot + MVC
Demander un exemple de sortie du journal des paramètres Java et Spring MVC
Recherche de valeur de type JSON MySQL avec SpringBoot + Spring JPA