[JAVA] Registrieren Sie die Konvertierung des Anforderungsparametertyps mit SpringBoot + MVC

Automatische Typkonvertierung des Anforderungsparameters durch Spring MVC anfordern

Spring MVC konvertiert Anforderungsparameter in den entsprechenden Typ. Die Standardtypkonvertierung wird bereitgestellt. Wenn Sie sie also in einem anderen Typ speichern möchten (in Ihrer eigenen Klasse gespeichert, einem Typ, der sich von dem Typ unterscheidet, der automatisch aufgelöst wird), registrieren Sie sie in der Typkonvertierung in den Spring MVC-Einstellungen. Machen.

Beispiel: Konvertieren der Datumseingabe in java.time.LocalDate (standardmäßig java.util.Date)

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

Der Geburtstag von SampleModel ist vom Typ LocalDate. Dieses Mal werden alle Parameter im Allgemeinen in die Spring MVC-Einstellungen konvertiert.

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 ist eine Klasse, die von "org.springframework.core.convert.converter.Converter" erbt.

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

Registrieren Sie die Konvertierung des Anforderungsparametertyps mit SpringBoot + MVC
Beispiel für die Ausgabe eines Parameterprotokollprotokolls Java & Spring MVC
MySQL JSON-Typ Wertesuche mit SpringBoot + Spring JPA