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