Dieser Artikel bietet Ihnen eine Einführung in die Typkonvertierungs- und Überprüfungsmethoden von SpringMVC (mit Code). Ich hoffe, dass er für Freunde hilfreich ist.
Spring MVC-Datenbindungsprozess:
SpringMvc übergibt das ServletRequest-Objekt und die formale Parameterinstanz der Zielmethode zur Erstellung an die WebDataBinderFactory-Instanz ein DataBinder-Instanzobjekt. DataBinder ruft die im SpringMvc-Kontext zusammengestellte ConversionService-Komponente auf, um Typkonvertierung und Datenformatierung durchzuführen, und füllt die Servlet-Anforderungsinformationen in das formale Parameterobjekt. Rufen Sie den Validator-Primärschlüssel auf, um die Gültigkeit der ausgewählten Daten des formalen Parameterobjekts zu überprüfen, das an die Anforderungsinformationen gebunden wurde, und generieren Sie schließlich das BindingData-Objekt für das Datenbindungsergebnis. SpringMVC extrahiert das formale Parameterobjekt und das Überprüfungsfehlerobjekt in BindingResult und weist sie den entsprechenden Parametern der Verarbeitungsmethode zu
Aus dem Quellcode können wir ersehen, dass das DataBinder-Objekt über WebDataBinderFactory erstellt wird
Benutzerdefinierter Typkonverter
Wenn wir auf besondere Anlässe stoßen, müssen wir möglicherweise unseren eigenen Typkonverter definieren. Lassen Sie mich einen benutzerdefinierten Typkonverter erklären, der eine Zeichenfolge in ein emp-Objekt konvertiert. Wenn die Seite die Datenbindung oder Typkonvertierung nicht abschließen kann, löst springmvc eine Ausnahme aus. Die Ausnahmeinformationen können mit BindingResult abgerufen werden.
Spring definiert drei Arten von Konverterschnittstellen, die sie implementieren, kann in ConversionServiceFactoryBean als benutzerdefinierter Konverter registriert werden.
Convertre: S-Typ in T-Typ konvertieren.
ConverterFactory: Kapselt mehrere „homogene“ Konverter derselben Klasse zusammen. Wenn Sie einen Typ in einen anderen Typ und Unterklassenobjekte (z. B. String in Number in eine Unterklasse von Number ) konvertieren möchten, können Sie dies verwenden Konverter
GenericConverter: Er wählt die Typkonvertierung basierend auf den Kontextinformationen in der Hostklasse aus, in der sich das Quellklassenobjekt und das Zielklassenobjekt befinden.
package com.spring.mvc.controller; import org.springframework.core.convert.converter.Converter; import org.springframework.stereotype.Component; @Component public class UserConverter implements Converter<String, User>{ @Override public User convert(String source) { System.out.println(source); String users [] = source.split("-"); User user = new User(); user.setUno(Integer.valueOf(users[0])); user.setUsername(users[1]); user.setUserpass(users[2]); return user; } }
ConversionService ist die Kernschnittstelle des Typkonverters in SpringMVC. Um einen benutzerdefinierten Typkonverter hinzuzufügen, müssen Sie diese Schnittstelle implementieren/ConversionServiceFactoryBean verwenden, um den ersten ConversionService im IOC-Container von Spring zu erstellen und ihn im Bean zu konfigurieren Eigenschaften Für die Implementierungsklasse des Typkonverters wird der Typkonverter automatisch aufgerufen, wenn SpringMvc die formale Parameterbindung der Methode übernimmt.
<!--将非mapping配置下的请求交给默认的Servlet来处理 --> <mvc:default-servlet-handler /> <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean"> <property name="converters"> <set> <ref bean="userConverter" /> </set> </property> </bean> <!-- 注册类型转换器 --> <mvc:annotation-driven conversion-service="conversionService" />
In der tatsächlichen Entwicklung muss außerdem Folgendes konfiguriert werden:
Datenformatierung
Eingabe-/Ausgabeformatierung von Attributen, Im Wesentlichen gehört es immer noch zur Kategorie der Typkonvertierung. Spring definiert eine FarmattingConversionService-Implementierungsklasse, die die ConversionService-Schnittstelle im Formatierungsmodul implementiert. Diese Implementierungsklasse erweitert GenericConversionService und verfügt daher über Typkonvertierungs- und Formatierungsfunktionen. FormattingConversionService verfügt über eine FormattingConversionServiceFactoryBean-Factory-Klasse, die zum Erstellen ersterer verwendet wird. Wir möchten dies registrieren
<mvc:annotation-driven conversion-service="FormattingConversionServiceFactoryBean" />
JSR303
jsr303 ist das von Java bereitgestellte Standard-Framework für die Überprüfung der Bean-Daten. Es wurde in JavaEE6.0 aufgenommen und JSR303 bestanden Markieren Sie die Bean-Attribute mit Standarddaten wie @NotNull und @Max, um Validierungsregeln anzugeben, und verifizieren Sie das Bean über die markierte Verifizierungsschnittstelle.
@NotEmpty @NotNull private String name; @NotNull @NotEmpty private String age; @NotNull @NotEmpty @Email private String email;
Wir verwenden das von SpringMVC an der Rezeption bereitgestellte Form-Tag und verwenden den Pfad „Form: Fehler“, um das Attribut
@RequestMapping(value="/student",method=RequestMethod.POST) public String add(@Valid()Student student,BindingResult result){ if (!result.hasErrors()) {//判断是否有格式转换错误或者其他校验没通过 userService.addStudent(student); return "redirect:list"; }else return "addPage"; }
Internationalisierung der SpringMvc-Eingabeaufforderungsnachricht< zu binden 🎜>
<!-- 注册国际化信息,必须有id,指定资源文件名称,资源文件在src目录下 --> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="basename" value="message"></property> </bean>
Das obige ist der detaillierte Inhalt vonEinführung in SpringMVC-Typkonvertierungs- und Verifizierungsmethoden (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!