Maison > Java > javaDidacticiel > Introduction aux méthodes de conversion et de vérification de type SpringMVC (avec code)

Introduction aux méthodes de conversion et de vérification de type SpringMVC (avec code)

不言
Libérer: 2018-09-28 15:54:29
avant
1684 Les gens l'ont consulté

Cet article vous présente une introduction aux méthodes de conversion et de vérification de SpringMVC (avec code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Processus de liaison de données Spring mvc :

SpringMvc transmet l'objet ServletRequest et l'instance de paramètre formel de la méthode cible à l'instance WebDataBinderFactory pour créer un objet d'instance DataBinder. DataBinder appelle le composant ConversionService assemblé dans le contexte SpringMvc pour effectuer la conversion de type et le formatage des données, et remplit les informations de demande de servlet dans l'objet paramètre formel. Appelez la clé primaire du validateur pour vérifier la validité des données sélectionnées de l'objet paramètre formel qui a été lié aux informations de la demande, et enfin générez l'objet BindingData du résultat de liaison de données. SpringMVC extrait l'objet paramètre formel et l'objet erreur de vérification dans BindingResult et les affecte aux paramètres correspondants de la méthode de traitement

Nous pouvons voir dans le code source que l'objet DataBinder est créé via WebDataBinderFactory

Convertisseur de type personnalisé

Lorsque nous rencontrons des occasions spéciales, nous devrons peut-être définir notre propre convertisseur de type. Expliquons ensuite un convertisseur de type personnalisé qui convertit une chaîne en un objet emp. Lorsque la page ne peut pas terminer la liaison de données ou la conversion de type, springmvc lèvera une exception. Les informations sur l'exception peuvent être obtenues à l'aide de BindingResult.

Spring définit trois types d'interfaces de convertisseur. Toute interface de convertisseur qui l'implémente peut être enregistrée dans ConversionServiceFactoryBean en tant que convertisseur personnalisé.

Converter : Convertit le type S en type T.

ConverterFactory : encapsule ensemble plusieurs convertisseurs "homogènes" de la même classe. Si vous souhaitez convertir un type en un autre type et des objets de sous-classe (tels que String en Number en une sous-classe de Number ), vous pouvez l'utiliser. converter

GenericConverter : il sélectionnera la conversion de type en fonction des informations contextuelles dans la classe hôte où se trouvent l'objet de classe source et l'objet de classe cible.

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;
    }
}
Copier après la connexion

ConversionService est l'interface principale du convertisseur de type dans SpringMVC. Pour ajouter un convertisseur de type personnalisé, vous devez implémenter cette interface/utiliser ConversionServiceFactoryBean pour créer le premier ConversionService dans le conteneur IOC de Spring et l'ajouter. à la configuration de la propriété Bean Pour la classe d'implémentation du convertisseur de type, le convertisseur de type sera automatiquement appelé lorsque SpringMvc gérera la liaison formelle des paramètres de la méthode.

<!--将非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" />
Copier après la connexion

En développement réel, il doit également être configuré : balise

Format des données

Format d'entrée/sortie pour La transformation d'attributs, par essence, appartient toujours à la catégorie des conversions de types. Spring définit une classe d'implémentation FarmattingConversionService qui implémente l'interface ConversionService dans le module de formatage. Cette classe d'implémentation étend GenericConversionService, elle possède donc à la fois des fonctions de conversion de type et de formatage. FormattingConversionService possède une classe d'usine FormattingConversionServiceFactoryBean, qui est utilisée pour construire la première. Nous devons enregistrer ce

<mvc:annotation-driven conversion-service="FormattingConversionServiceFactoryBean" />
Copier après la connexion

JSR303

jsr303 est le cadre standard fourni par Java pour la vérification de la validité des données du bean. Il est déjà inclus dans JavaEE6.0. JSR303 spécifie les règles de validation en annotant les données standard telles que @NotNull et @Max sur les attributs Bean, et vérifie le Bean via l'interface de vérification annotée.

@NotEmpty
    @NotNull
    private String name;
    
    @NotNull
    @NotEmpty
    private String age;
    
    @NotNull
    @NotEmpty
    @Email
    private String email;
Copier après la connexion

Nous utilisons la balise Form fournie par SpringMVC au premier plan et utilisons Form: chemin d'erreurs pour lier les attributs

@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";
    }
Copier après la connexion

Message d'invite SpringMvc Transformation internationale

<!-- 注册国际化信息,必须有id,指定资源文件名称,资源文件在src目录下 -->
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basename" value="message"></property>
    </bean>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:cnblogs.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal