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);
}
}