1 votes

Les erreurs de validation ne sont pas rendues par la balise <form:errors> dans mon application Web MVC Spring 3.0.3.

Je développe un service de rendu d'images qui prend une série de paramètres de chaîne de requête en tant qu'arguments pour afficher une image en utilisant Spring 3.0.3. J'essaie de valider les paramètres de la chaîne de requête et d'afficher des erreurs le cas échéant.

La validation semble fonctionner correctement car l'instruction conditionnelle sur le paramètre result de BindingResult affichera la vue d'erreur lorsque c'est nécessaire. Ce dont je ne suis pas sûr, c'est pourquoi la balise ne rend pas les messages d'erreur. Je suppose que je manque simplement d'un concept crucial en ce qui concerne le traitement des formulaires en Spring.

En tout cas, voici les différents morceaux de code que j'utilise pour essayer d'atteindre cela :

Contrôleur :

@Controller
@RequestMapping(value="/render")
public class RenderController 
{
    @InitBinder
    public void initBinder(WebDataBinder binder)
    {
        binder.setValidator(new RenderJobValidator());
    }

    @ModelAttribute
    public RenderJob newRenderJob( 
        @RequestParam(value="icb", defaultValue="") String icb, 
        @RequestParam(value="icj", defaultValue="") String icj,
        @RequestParam(value="ics", defaultValue="") String ics,
        @RequestParam(value="icf", defaultValue="") String icf,
        @RequestParam(value="icc", defaultValue="1") int icc,
        @RequestParam(value="icd", defaultValue="0") int icd)
    {
        RenderJob result = new RenderJob();
        result.setIcb(icb);
        result.setIcj(icj);
        result.setIcs(ics);
        result.setIcf(icf);
        result.setIcc(icc);
        result.setIcd(icd);
        return result;
    }

    @RequestMapping(method=RequestMethod.GET)
    public String handleJob(@Valid RenderJob renderJob, BindingResult result)
    {
        if(result.hasErrors())
        {
            return "render/error";
        }
        return "render/debug";
    }
}

Validateur :

public class RenderJobValidator implements Validator 
{
    @Override
    public boolean supports(Class clazz) 
    {
        return RenderJob.class.equals(clazz);
    }

    @Override
    public void validate(Object obj, Errors errors) 
    {
        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "icb", "Le paramètre 'icb' est requis");
        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "icj", "Le paramètre 'icj' est requis");
        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "ics", "Le paramètre 'ics' est requis");
        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "icf", "Le paramètre 'icf' est requis");
    }
}

Vue (WEB-INF/views/render/error.jsp)

<%@ page contentType="text/html;charset=UTF-8"%>
<%@ page pageEncoding="UTF-8"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

Erreur de rendu

Erreur de rendu

4voto

axtavt Points 126632

Lorsque est utilisé à l'intérieur d'un , il affiche les erreurs de l'objet de commande du formulaire :

Sinon, vous avez besoin d'un chemin complet :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X