Maison  >  Article  >  Java  >  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)

不言
不言avant
2018-09-28 15:54:291663parcourir

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é.

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

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" />

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

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" />

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;

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

Message d'invite SpringMvc Transformation internationale

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

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer