IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Web Java Discussion :

[Spring MVC] SimpleFormController, Command et Validator


Sujet :

Spring Web Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 118
    Points : 47
    Points
    47
    Par défaut [Spring MVC] SimpleFormController, Command et Validator
    Bonjour à tous.

    Je suis novice sur Spring. Je développe une application portlet. J'ai bien tenté de me dépatouiller avec mes controllers, aujourd'hui je bloque sur la modification d'un bean grâce à un formulaire. En effet, après avoir défini mon fichier XML, j'obtiens l'erreur suivante: Validator does not support command class [.........portlet.command.quizz.QuizzCommand]

    Je suis encore dans le flou concernant mes classes validator, command et controller. Quels sont simplement leur rôle? Comment dois-je opérer pour manipuler ma classe Command? Quel est le rôle des méthodes onSubmitAction et formBackingObject dans mon controller?

    J'ai le code suivant dans mon controller. Qq'un voit'il d'ou peut provenir l'erreur?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    public class QuizzSaveModificationController extends SimpleFormController {
     
        private QuizzService quizzService;
     
        public void afterPropertiesSet() throws Exception {
            if (this.quizzService == null)
                throw new IllegalArgumentException("A quizzService is required");
        }
     
    	public void onSubmitAction(ActionRequest request, ActionResponse response,
    			Object command,	BindException errors) throws Exception {
     
    		QuizzCommand quizzCommand = (QuizzCommand) command;
    	    long identifiant = Long.parseLong(request.getParameter("quzId"));
     
    		IQuizz quizzLu = quizzService.lireQuizz(identifiant);
    		quizzService.modifierQuizz(quizzLu);
     
    		response.setRenderParameter("action","books");
    	}
     
        protected Object formBackingObject(PortletRequest request)
        		throws Exception {
     
        	IQuizz quizz;
     
    	    long identifiant = Long.parseLong(request.getParameter("quzId"));
    	    quizz = quizzService.lireQuizz(identifiant);
     
    		return quizz;
    	}
     
    	public void setQuizzService(QuizzService quizzService) {
    		this.quizzService = quizzService;
    	}
     
    }

  2. #2
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Points : 6 301
    Points
    6 301
    Par défaut
    Peut-on voir ton fichier de configuration (ou du moins la partie qui définit le controlleur ) ?
    Hikage
    SCJP / SCWCD & SCWSJD Certified / Spring Framework Certified
    [Personal Web] [CV]

    F.A.Q Spring Framework - Participez !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 118
    Points : 47
    Points
    47
    Par défaut
    Très bien. Voici une partie de mon quizz.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    <bean id="quizzSaveModificationController" class="fr.portlet.controller.quizz.QuizzSaveModificationController" parent="quizzControllerTemplate"> 
    		<property name="sessionForm" value="true"/>
    		<property name="formView" value="quizzEditMerge"/>
    		<property name="commandName" value="quizz"/>
    		<property name="commandClass" value="fr.portlet.command.quizz.QuizzCommand"/>
    		<property name="successView" value="quizzEditListe"/>
    		<property name="validator"><ref bean="quizzValidator"/></property> 
     
    </bean>
     
    <bean id="portletModeParameterHandlerMapping" class="org.springframework.web.portlet.handler.PortletModeParameterHandlerMapping">
            <property name="order" value="10"/>
    		<property name="interceptors">
    			<list>
    				<ref bean="parameterMappingInterceptor"/>
    			</list>
    		</property>
    		<property name="portletModeParameterMap">
    			<map>
    				<entry key="view">
    					<map>
    						<entry key="quizz"><ref bean="quizzController"/></entry>
    						<entry key="viewDetailQuizz"><ref bean="quizzDetailController"/></entry>						
    						</map>
    				</entry>
    				<entry key="edit">
    					<map>
    						<entry key="editQuizz"><ref bean="quizzEditController"/></entry>
    						<entry key="deleteQuizz"><ref bean="quizzDeleteController"/></entry>
    						<entry key="mergeQuizz"><ref bean="quizzMergeController"/></entry>
    						<entry key="addQuizz"><ref bean="quizzAddController"/></entry>
    					<entry key="saveQuizz"><ref bean="quizzSaveModificationController"/></entry>
    						<entry key="addQuestionquizz"><ref bean="questionquizzAddController"/></entry>
    						<entry key="deleteQuestionquizz"><ref bean="questionquizzDeleteController"/></entry>
    						<entry key="mergeQuestionquizz"><ref bean="questionquizzMergeController"/></entry>
    					</map>
    				</entry>
    			</map>
    		</property>
    	</bean>
    Merci pour l'aide.

  4. #4
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Points : 6 301
    Points
    6 301
    Par défaut
    Et montre le code et la configuration du QuizzValidator maintenant
    Hikage
    SCJP / SCWCD & SCWSJD Certified / Spring Framework Certified
    [Personal Web] [CV]

    F.A.Q Spring Framework - Participez !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 118
    Points : 47
    Points
    47
    Par défaut
    Oups.. Oubli du validator...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	<bean id="quizzValidator" class="fr.portlet.validator.quizz.QuizzValidator"/>
    et pour le code de la classe (qui ne fait pas grand chose pour le moment):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    public class QuizzValidator implements Validator {
     
    	  /**
               * Indique le type d'objet supporté par ce validator
               * @param clazz
               * @return
               */
    	  public boolean supports(Class clazz) {
    	    return clazz.equals(Quizz.class);
    	  }
     
    	  /**
               * Validation d'une entrée
               * @param 
               */
    	  	public void validate(Object o, Errors errors) {
     
    	  		Quizz quizz = (Quizz)o;
    			validateTitre(quizz, errors);
    			validateDescriptif(quizz, errors);
    			validateEtat(quizz, errors);
    			validateSeuil(quizz, errors);
    			validateTexteFelicitation(quizz, errors);
    			validateNbReponses(quizz, errors);
    	  	}
     
     
    		public void validateTitre(Quizz quizz, Errors errors) {
    			ValidationUtils.rejectIfEmpty(errors, "titre", "TITRE_REQUIS", "Author is required.");
    		}
     
    		public void validateDescriptif(Quizz quizz, Errors errors) {
    		}
     
    		public void validateEtat(Quizz quizz, Errors errors) {
    		}
     
    		public void validateSeuil(Quizz quizz, Errors errors) {
    		}
     
    		public void validateTexteFelicitation(Quizz quizz, Errors errors) {
    		}
     
    		public void validateNbReponses(Quizz quizz, Errors errors) {
    		}
    }

  6. #6
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Points : 6 301
    Points
    6 301
    Par défaut
    Ok. bon le problème est que le validator, va valider l'object "command".

    Or, la class de l'objet command est fr.portlet.command.quizz.QuizzCommand
    ( cf : <property name="commandClass" value="fr.portlet.command.quizz.QuizzCommand"/> )


    Mais ton validateur est configuré pour valider des objet Quizz
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      public boolean supports(Class clazz) {
    	    return clazz.equals(Quizz.class);
    	  }
    Donc Spring t'informe que le validateur configuré ne peut pas valider ton objet command.
    Hikage
    SCJP / SCWCD & SCWSJD Certified / Spring Framework Certified
    [Personal Web] [CV]

    F.A.Q Spring Framework - Participez !

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 118
    Points : 47
    Points
    47
    Par défaut
    L'objet Quizz est mon objet métier. Si je dois valider un objet quizzCommand, comment dois je opérer au niveau du Controller puisque ma méthode modifierQuizz prennent en parametre un objet IQuizz qui est une interface de mon Quizz?

    Je suis à l'ouest... Désolé

Discussions similaires

  1. [Spring MVC] SimpleformController
    Par teryValencia dans le forum Spring Web
    Réponses: 2
    Dernier message: 19/02/2008, 16h10
  2. [Spring MVC] SimpleFormController + checkbox
    Par sothea dans le forum Spring Web
    Réponses: 3
    Dernier message: 15/05/2007, 23h22
  3. [Spring MVC] recuperer le ServletContext dans un Validator
    Par manuzinho dans le forum Spring Web
    Réponses: 1
    Dernier message: 07/08/2006, 14h09
  4. Réponses: 2
    Dernier message: 16/02/2006, 10h29
  5. [Spring MVC][Validator] Ne stop pas si il y a une erreurs
    Par Hikage dans le forum Spring Web
    Réponses: 3
    Dernier message: 15/02/2006, 09h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo