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

Struts 1 Java Discussion :

java.lang.IllegalArgumentException: Resources cannot be null.


Sujet :

Struts 1 Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 68
    Points : 62
    Points
    62
    Par défaut java.lang.IllegalArgumentException: Resources cannot be null.
    Bonjour à tous,

    je suis occupé à développez une petite application en Struts, Spring et sans javascript... Lorsque je valide le formulaire suivante :

    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
     
    public class MovieForm extends ValidatorForm {
     
            .....
     
    	public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
    		ActionErrors errors = super.validate(mapping, request);
    		if (errors == null) {
    			errors = new ActionErrors();
    		}
     		if (StringUtils.isBlank(getTitle())) {
    			  errors.add(ActionErrors.GLOBAL_MESSAGE, new ActionMessage("movie.error.title"));
    		}
    		String duration = getDuration();
    		if (StringUtils.isBlank(getDuration()) || (!StringUtils.isNumeric(duration))) {
    			errors.add(ActionErrors.GLOBAL_MESSAGE, new ActionMessage("movie.error.duration"));
    		}
     
    		if (StringUtils.isBlank(getKind())) {
    			  errors.add(ActionErrors.GLOBAL_MESSAGE, new ActionMessage("movie.error.kind"));
    		}		  
    		if (StringUtils.isBlank(getKind())) {
    			  errors.add(ActionErrors.GLOBAL_MESSAGE, new ActionMessage("movie.error.media"));
    		}		  
    		return errors;
    	}
    avant même qu'il ne retourne vers l'action adéquate, Struts m'envoit une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    java.lang.IllegalArgumentException: Resources cannot be null.
    	org.apache.commons.validator.Validator.<init>(Validator.java:161)
    	org.apache.struts.validator.Resources.initValidator(Resources.java:475)
    	org.apache.struts.validator.ValidatorForm.validate(ValidatorForm.java:104)
    	movie.MovieForm.validate(MovieForm.java:78)
    	org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:950)
    	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:207)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:75)
    Je ne comprends pas, c'est à se flinguer. Ca doit surement être tout bête :-) Quelqu'un aurait une idée ? Voici le struts-config.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
    42
    43
    44
    45
    46
    47
    48
     
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
    <struts-config>
    	<!-- ========== Form Bean Definitions =================================== -->
    	<form-beans>
    		<form-bean name="movieForm" type="movie.MovieForm"/>
    	</form-beans>
     
     
    	<!-- ========== Action Mapping Definitions ============================== -->
    	<action-mappings>
    		<action path="/startup"
    				type="startup.StartupAction"
    				parameter="init"
    				validate="false">
    		  	    <forward name="success" path=".startup"/>
    		</action>	
     
    		<action path="/editMovie"
    				type="movie.MovieAction"
    				name="movieForm"
    				parameter="init"
    				validate="false">
    		  	    <forward name="success" path=".movie.edit"/>
    		</action>			
     
    		<action path="/movieSave"
    				type="movie.MovieAction"
    				name="movieForm"
    				parameter="save"
    				input=".movie.edit"
    				validate="true">
    		  	    <forward name="success" path=".movie.edit"/>
    		</action>					
    	</action-mappings>
     
    	<message-resources parameter="ApplicationResources"/>
     
    	<!-- ========== Plugins ============================== -->
    	<plug-in className="org.apache.struts.tiles.TilesPlugin" >
    		<set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml"/>
    		<set-property property="definitions-debug" value="1" />
    		<set-property property="definitions-parser-details" value="0" />
    		<set-property property="definitions-parser-validate" value="true" />
    	</plug-in>
     
    </struts-config>
    Pour celui ou celle qui arrive à m'aider ou qui a tenté de m'aider je l'en remercie déjà d'avance.

    Coyote

  2. #2
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Bonjour.
    Dans ton struts-config.xml, t'as mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <message-resources parameter="ApplicationResources"/>
    L'erreur, sauf erreur de ma part, provient certainement du fait que Struts ne trouve pas le fichier de ressources indiqué la dessus.

    Vérifies STP si tu as bien un fichier ApplicationResources.properties ou peut être une version locale ApplicationResources_FR_fr.properties par exemple dans la racine du dossier WEB-INF/classes/.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 68
    Points : 62
    Points
    62
    Par défaut Ce que je n'ai pas dit :-)
    Salut,

    tout d'abord merci pour ta réponse rapide! Ce que je n'ai pas dit, c'est que j'utilise <bean:message key=""/> dans mes JSP et qu'il me retrouve les messages définis dans ApplicationResources.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    html:form action="movieSave.do" method="POST" enctype="multipart/form-data">
    	<table>
    		<tr>
    			<td><bean:message key="movie.title"/></td>
    			<td colspan="2"><html:text property="title"/></td>			
    		</tr>
            ...
    Mais je vais suivre ton conseil...

    Merci beaucoup

    Coyote

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 68
    Points : 62
    Points
    62
    Par défaut Feedback
    Le fichier properties est bien dans /WEB-INF/classes :-(

    C'est vraiment à se flinguer...

  5. #5
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Ta classe MovieForm hérite de ValidatorForm mais tu n'as pas défini le plugin Validator dans le struts-config.xml.

    Souhaites-tu utiliser le Validator ou non ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 68
    Points : 62
    Points
    62
    Par défaut Oui mais ...
    Salut,

    merci pour ta réponse mais je pensais que le plugin Validator ne servait que pour la validation par xml... Si je valide uniquement qu'avec Java dois-je tout de même le rajouter dans mon struts-config ?

    Coyote

  7. #7
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Non, il ne s'agit pas du fichier struts-config.xml, mais du code de ta classe MovieForm.
    public class MovieForm extends ValidatorForm {
    Si tu n'utilises pas la validation par XML, ton MovieForm ferait mieux d'hériter d'ActionForm, non ?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 68
    Points : 62
    Points
    62
    Par défaut Impeccable, çà fonctionne
    Merci beaucoup pour ta réponse! Ca fonctionne :-)

    Voici ce que je pensais avoir compris :

    - ActionForm pour un formulaire ne nécessitant pas de validation
    - ValidatorForm pour un formulaire nécessitant une validation (java ou xml)

    Dernière question : pour ou contre la valdation par xml ?

    Merci encore pour tout.

    Coyote

  9. #9
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Citation Envoyé par coyote999
    Merci beaucoup pour ta réponse! Ca fonctionne :-)
    De rien, mais remercies plutôt c_nvy, c'est lui qui a trouvé l'origine du problème , moi, je n'ai fait que t'expliquer ce qu'il voulait dire!

    Citation Envoyé par coyote999
    Voici ce que je pensais avoir compris :

    - ActionForm pour un formulaire ne nécessitant pas de validation
    - ValidatorForm pour un formulaire nécessitant une validation (java ou xml)
    Je dois dire que non, ce n'est pas ça : avec ActionForm, il est parfaitement possible de faire la validation en Java avec la méthode validate(), mais seulement en Java.
    ValidatorForm est à utiliser lorsque tu passes par le plugin Validator, car c'est elle qui définit la méthode validate() en se basant sur les règles définies dans un fichier XML (validation.xml).

    Pour ta dernière question, je pense que oui, utiliser le plugin Validator est une très bonne chose, car ça te permet :
    • moins de code : tu n'as plus à définir validate() dans chaque ActionForm avec les règles sur les champs à valider.
    • réutilisabilité :tu évites la répétition : une règle de validation XML peut être réutilisée dans plusieurs tests.
    • simplicité de mise à jour : pour changer une règle de validation, pas besoin de toucher au code Java, de recompiler, etc. : Tu la modifies dans un fichier XML, et hop !
    • fiabilité : je pense que les algorithmes utilisés dans le plugin Validator sont plus sûrs et fiables, et ont subi suffisament de tests.
    Bonne chance.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 68
    Points : 62
    Points
    62
    Par défaut Parfait
    Merci à tous

    J'aurais appris une chose de plus ce week-end.

    Coyote

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/08/2011, 08h44
  2. Réponses: 3
    Dernier message: 14/03/2011, 17h12
  3. Réponses: 1
    Dernier message: 18/08/2010, 11h36
  4. Réponses: 1
    Dernier message: 26/01/2010, 14h25
  5. java.lang.IllegalArgumentException: vendorName == null!
    Par spax dans le forum API standards et tierces
    Réponses: 8
    Dernier message: 16/10/2008, 11h47

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