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 :

[validator] struts [message.properties]


Sujet :

Struts 1 Java

  1. #1
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 90
    Points : 53
    Points
    53
    Par défaut [validator] struts [message.properties]
    bonjour
    je suis entrain de developper une application web et j'utilise le plug in validator pour verifier si les champs des formulaires sont bien remplis avant de valider

    mais je suis confu pour le fichier messge.properties je dois y ajouter des messages d'erreurs. Est ce que je dois moi même creer ce fichier ( si oui ou le placer) ou faut il seulment l'appeller (dans ce cas dans quel dossier il se trouve) ??
    merci pour votre aide

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    325
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 325
    Points : 228
    Points
    228
    Par défaut
    Regardes le tuto de mickael baron à propos de struts sur developpez.com, tout y est expliqué, avec des exemples.

  3. #3
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut réponse [validator] struts [message.properties]
    crée un fichier avec une extensexion .properties et stockez ce fichier dans le dosier class

  4. #4
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 90
    Points : 53
    Points
    53
    Par défaut
    bonjour merci pour le tutorial
    mais si j'ai bien compris je ne peux utiliser validator que si j'ai utilisé DynaActionForm, par contre moi, j'ai travaillé avec des classes qui heritent de ActionForm
    y a-t-il un moyen d'utiliser le plug-in Validator avec les bean ActionForm (j'aimerais bien puisque les contrôles que j'ai à faire ne nécessitent pas un aller retour jusqu'au serveur )ou dois-je absolument passer par la methode validate

  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
    L'ActionForm doit tout simplement hériter de ValidatorForm.

  6. #6
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 90
    Points : 53
    Points
    53
    Par défaut
    salut
    j'ai suivi le tutorial de baron pour avoir des messages d'erreurs dans une boite de dialogue gérée par javaScript, voila les bouts de code de mes fichiers :

    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
    <?xml version="1.0" encoding="UTF-8"?>
     
    <struts-config>
      <form-beans>
    	    <form-bean name="personneForm"
    			type="com.cdvm.web.forms.PersonneForm">
    		</form-bean>
      </form-beans>
     
      <global-forwards>
    			<forward name="index" path="/index.jsp" />
      </global-forwards>
     
    <action-mappings>
      <action path="/personne" 
    			type="com.cdvm.web.actions.PersonneAction" name="personneForm"
    			scope="request" parameter="method"  validate="true">
    			<forward name="listePersonnes" 
    				path="/WEB-INF/vues/jspPersonne/listePersonnes.jsp" />
    			<forward name="ajouterPersonne"
    				path="/WEB-INF/vues/jspPersonne/ajouterPersonne.jsp" />
    			<forward name="affichePersonne"
    				path="/WEB-INF/vues/jspPersonne/modifierPersonne.jsp" />
    			<forward name="rechercherPersonne"
    				path="/WEB-INF/vues/jspPersonne/rechercherPersonne.jsp" />
     
      </action>
     
     
     
    </action-mappings>	
     
     
    <!-- ================================ Message Resources Definitions -->
    	<message-resources parameter="MessageResource.properties" />
     
     
    <!-- ========================== Plug Ins Configuration -->
     
    <plug-in className="org.apache.struts.validator.ValidatorPlugIn" >
    	<set-property property="pathnames" 
    		value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
    </plug-in>
    </struts-config>
    validation.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
    <?xml version="1.0" encoding="UTF-8"?>
     
    <!DOCTYPE form-validation PUBLIC 
    	"-//Apache Software Foundation//DTD Commons ... Configuration 1.1.3//EN"
    	"http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
    <form-validation>
    	<formset>
    		<form name="personneForm">
                <field property="nom" depends="required">
                    <arg0 key="prompt.nom"/>
                </field>
                <field property="prenom" depends="required">
                    <arg0 key="prompt.prenom"/>
                </field>
                <field property="adresse" depends="required">
                    <arg0 key="prompt.adresse"/>
                </field>
            </form>
    	</formset>
    </form-validation>
    PersonneForm.java
    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
    49
    50
    51
    52
    package com.cdvm.web.forms;
     
    import java.util.ArrayList;
    import java.util.List;
     
    import org.apache.struts.validator.ValidatorForm;
     
    public class PersonneForm extends ValidatorForm {
     
    	private static final long serialVersionUID = 1L;
     
    	private String nom;
     
    	private String prenom;
     
    	private String adresse;
     
    	private List adresses = new ArrayList();
     
    	public String getAdresse() {
    		return adresse;
    	}
     
    	public void setAdresse(String adresse) {
    		this.adresse = adresse;
    	}
     
    	public String getNom() {
    		return nom;
    	}
     
    	public void setNom(String nom) {
    		this.nom = nom;
    	}
     
    	public String getPrenom() {
    		return prenom;
    	}
     
    	public void setPrenom(String prenom) {
    		this.prenom = prenom;
    	}
     
    	public List getAdresses() {
    		return adresses;
    	}
     
    	public void setAdresses(List adresses) {
    		this.adresses = adresses;
    	}
     
    }
    ajouterPersonne.jsp
    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
    <%@include file="/WEB-INF/tlds/taglib.jsp"%>    
     
    <html>
    <head>
    <title>ajout</title>
    <html:javascript formName="formPersonne" />
    </head>
    <body>
     <form action="personne.do?method=ajouterPersonne" method="post" onsubmit="return validateFormPersonne(this);">
        <table >
    		<tr>
    			<td>Nom</td>
    		    <td>: <html:text property="nom" name="personneForm"/></td>
    		</tr>
     
    		<tr>
    			<td>Prenom</td>
    			<td>: <html:text property="prenom" name="personneForm"/></td>
    		</tr>
     
    		<tr>
    			<td>Rue</td>
    			<td>: <html:select property="adresse" name="personneForm">
    					<html:optionsCollection property="adresses" name="personneForm"/>
    				  </html:select>
    			</td>
    		</tr>
    	</table>
    <br>
    	<input type="submit" value="Valider" />
    	<input type="reset" value="Annuler" />
     
     </form>
     
    </body>
    </html>

  7. #7
    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
    Et le problème est ?

    Trois remarques :

    dans le mapping de l'Action, lorsque tu mets validate="true", il faut ajouter l'attribut input dans lequel tu dois spécifier la page vers laquelle il doit rediriger en cas d'erreur de validation.

    ton form-bean se nomme personneForm. Il faut donc coder :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:javascript formName="personneForm" />
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onsubmit="return validatePersonneForm(this);">
    Remplace la balise form par la balise Struts html:form. Ainsi, tu n'auras pas besoin de préciser name="personneForm" dans les tags html:text et html:select. Tu peux également utiliser les tags html:submit et html:reset.

    EDIT :

    4ème remarque :

    ajoute l'instruction suivante dans le struts-config.xml (après <?xml...> et avant <struts-config>):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <!DOCTYPE struts-config PUBLIC
              "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
              "dtd/struts-config_1_2.dtd">
    Ainsi, s'il y a des erreurs de grammaire dans le struts-config.xml, elles seront automatiquement détectées au parsing du fichier.
    Il faut mettre la version de la dtd qui correspond à ta version de Struts.
    Dans mon exemple, il s'agit d'une version 1.2 de Struts.

  8. #8
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 90
    Points : 53
    Points
    53
    Par défaut
    Merci pour les remarques
    en fait j'avais oublié de poser le probleme
    mais t'as deviné tt seul
    en fait le input que rederige vers la page d'erreur est-il obligatoire parcque comme j'ai dit je veux seulement tester si les champs sont bel et bien remplis
    et si non je veux affichier le message dans une boite de dialogue javascript ,
    donc je ne vois pas l'interêt de l'attribut input . sauf que si je ne le mets dans le fichier struts ca me genere l'erreur suivante :
    "No input attribute for mapping path /personne"
    encore si je le mets dans le fichierstrut-config il me dirige vers la page d'erreur une fois que je clique sur un lien qui fait appel a l'action personne

    voila le fichier log si ca peut aider
    13:42:14,218 DEBUG StandardWrapper:700 - Returning non-STM instance
    13:42:14,250 DEBUG PropertyMessageResources:127 - Initializing, config='org.apache.struts.util.LocalStrings', returnNull=true
    13:42:14,250 DEBUG ModuleUtils:180 - Get module name for path /personne.do
    13:42:14,250 DEBUG ModuleUtils:204 - Module name found: default
    13:42:14,281 DEBUG RequestProcessor:212 - Processing a 'GET' for path '/personne'
    13:42:14,281 DEBUG RequestProcessor:636 - Setting user locale 'fr'
    13:42:14,281 DEBUG RequestUtils:440 - Looking for ActionForm bean instance in scope 'request' under attribute key 'personneForm'
    13:42:14,281 DEBUG RequestUtils:515 - Creating new ActionForm instance of type 'com.cdvm.web.forms.PersonneForm'
    13:42:14,281 DEBUG RequestUtils:520 - --> com.cdvm.web.forms.PersonneForm@cc0e01
    13:42:14,281 DEBUG RequestProcessor:362 - Storing ActionForm bean instance in scope 'request' under attribute key 'personneForm'
    13:42:14,281 DEBUG RequestProcessor:812 - Populating bean properties from this request
    13:42:14,281 DEBUG BeanUtils:836 - BeanUtils.populate(com.cdvm.web.forms.PersonneForm@cc0e01, {method=[Ljava.lang.String;@ab7165})
    13:42:14,281 DEBUG BeanUtils:917 - setProperty(com.cdvm.web.forms.PersonneForm@cc0e01, method, [listePersonnes])
    13:42:14,296 DEBUG RequestProcessor:945 - Validating input form properties
    13:42:14,328 DEBUG PropertyMessageResources:177 - getMessage(fr,prompt.nom)
    13:42:14,328 DEBUG PropertyMessageResources:269 - loadLocale(fr)
    13:42:14,328 DEBUG PropertyMessageResources:291 - Loading resource 'MessageResource/properties_fr.properties'
    13:42:14,328 DEBUG PropertyMessageResources:316 - Loading resource completed
    13:42:14,328 DEBUG PropertyMessageResources:269 - loadLocale(fr_FR)
    13:42:14,328 DEBUG PropertyMessageResources:291 - Loading resource 'MessageResource/properties_fr_FR.properties'
    13:42:14,328 DEBUG PropertyMessageResources:316 - Loading resource completed
    13:42:14,343 DEBUG PropertyMessageResources:269 - loadLocale()
    13:42:14,343 DEBUG PropertyMessageResources:291 - Loading resource 'MessageResource/properties.properties'
    13:42:14,343 DEBUG PropertyMessageResources:316 - Loading resource completed
    13:42:14,343 DEBUG PropertyMessageResources:177 - getMessage(fr,prompt.prenom)
    13:42:14,343 DEBUG PropertyMessageResources:269 - loadLocale(fr)
    13:42:14,343 DEBUG PropertyMessageResources:269 - loadLocale(fr_FR)
    13:42:14,343 DEBUG PropertyMessageResources:269 - loadLocale()
    13:42:14,343 DEBUG PropertyMessageResources:177 - getMessage(fr,prompt.adresse)
    13:42:14,359 DEBUG PropertyMessageResources:269 - loadLocale(fr)
    13:42:14,359 DEBUG PropertyMessageResources:269 - loadLocale(fr_FR)
    13:42:14,359 DEBUG PropertyMessageResources:269 - loadLocale()
    13:42:14,359 DEBUG RequestProcessor:977 - Validation failed, returning to '/WEB-INF/vues/erreurs.jsp'
    13:42:14,359 DEBUG RequestProcessor:1015 - Delegating via forward to '/WEB-INF/vues/erreurs.jsp'
    13:42:14,375 DEBUG ApplicationDispatcher:148 - servletPath=/WEB-INF/vues/erreurs.jsp, pathInfo=null, queryString=null, name=null
    13:42:14,375 DEBUG ApplicationDispatcher:381 - Path Based Forward
    13:42:14,375 DEBUG StandardWrapper:700 - Returning non-STM instance
    13:42:14,375 DEBUG JspServlet:220 - JspEngine --> /WEB-INF/vues/erreurs.jsp
    13:42:14,375 DEBUG JspServlet:221 - ServletPath: /WEB-INF/vues/erreurs.jsp
    13:42:14,375 DEBUG JspServlet:222 - PathInfo: null
    13:42:14,375 DEBUG JspServlet:223 - RealPath: C:\CallistoWorkspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\webapps\cdvmDemo\WEB-INF\vues\erreurs.jsp
    13:42:14,375 DEBUG JspServlet:224 - RequestURI: /cdvmDemo/WEB-INF/vues/erreurs.jsp
    13:42:14,390 DEBUG JspServlet:225 - QueryString: method=listePersonnes
    13:42:14,390 DEBUG JspServlet:226 - Request Params:
    13:42:14,390 DEBUG JspServlet:231 - method = listePersonnes
    13:42:14,437 DEBUG ApplicationDispatcher:418 - Disabling the response for futher output
    est ce que vous pouvez m'eclaircir un peu les idées ??
    merci d'avance

  9. #9
    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
    Si tu veux activer la validation seulement côté client, il faut mettre l'attribut validate à false dans le mapping de l'Action.
    Mais attention, il faut être sûr dans ce cas que le javascript est bien activé parce que sinon, il n'y aura pas de validation.

  10. #10
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 90
    Points : 53
    Points
    53
    Par défaut
    il faut être sûr dans ce cas que le javascript est bien activé parce que sinon, il n'y aura pas de validation.
    Là tu parle coté navigateur web ?
    autre chose ,si par hasard je dois combiner entre le plug-in validator et la methode validate du ValidatorForm

    est ce que ca poserai un probleme ??

  11. #11
    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
    Citation Envoyé par apoca Voir le message
    Là tu parle coté navigateur web ?
    Tout à fait.
    Citation Envoyé par apoca Voir le message
    autre chose ,si par hasard je dois combiner entre le plug-in validator et la methode validate du ValidatorForm

    est ce que ca poserai un probleme ??
    Si tu veux combiner le Validator et la méthode validate, comme indiqué dans la FAQ, cela signifie que tu auras obligatoirement une validation côté serveur en plus de la validation côté client.
    Pour cela, il faut donc mettre validate à true et renseigner l'attribut input.

  12. #12
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 90
    Points : 53
    Points
    53
    Par défaut
    Re salut
    je viens de mettre l'attribut validate à false. maintenet je recois une boite de dialogue qui ne contient aucun message
    c deja mieux, mais c comme s'il ne reconnaissait pas le fichier properties

  13. #13
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 90
    Points : 53
    Points
    53
    Par défaut
    il faut donc mettre validate à true et renseigner l'attribut input.
    oui tout a fait, mais comme je l'ai dis precedement, c'est là que ca bloque, une fois je mets je mets validate a true et je renseigne l'input il me redirige vers la page d'erreur immediatement apres que je fais appel à l'ation personne
    pourtant dans le fichiers log je ne vois pas ou ca casse

  14. #14
    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
    Citation Envoyé par apoca Voir le message
    Re salut
    je viens de mettre l'attribut validate à false. maintenet je recois une boite de dialogue qui ne contient aucun message
    c deja mieux, mais c comme s'il ne reconnaissait pas le fichier properties
    Où as-tu mis le fichier MessageResource.properties ?
    Contient-il les messages d'erreurs par défaut du Validator ?

  15. #15
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 90
    Points : 53
    Points
    53
    Par défaut
    bon voila,
    j'ai résolu tout mes problèmes
    merci c_nvy
    En fait la boite de dialogue ne contenait pas de messages parce que j'avais mis le mauvais chemin dans le fichier strut-config,
    et même pour la methode validate je l'ai defini a true et j'ai renseigné l'attribut input
    et j'ai redefini la methode validate dans le validatorForm (c'est comme si par défaut il mettait errors à true)
    donc j'ai ajouté ce bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public ActionErrors validate(ActionMapping mapping, HttpServletRequest request)	{
    	ActionErrors errors = new ActionErrors();
    	return errors;
    	}
    et voilà ca marche 5/5
    mais encore une toute petite question concernant la methode validate(juste pour savoir): est ce que je peux par exemple avoir les messages d'erreurs dans une boite de dialogue comme c'est la cas pour le validator, ou le seul moyen est de passer par la page JSP défini dans l'attribut input(puisque la validation se fait coté serveur) ??

  16. #16
    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
    Les messages qui s'affichent dans la popup sont ceux générés côté client via Javascript.
    Avec la méthode validate, l'affichage se fera dans la jsp via le tag <html:errors/>.

  17. #17
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 90
    Points : 53
    Points
    53
    Par défaut
    Bonjour,
    dédolé mais j'ai un autre problème: une fois que je demarre l'application et quand je passe à une page jsp qui fais appel au :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:javascript formName="personneForm" />
    dans le header, la page apparait avec les differentes fonctions javascript c comme si on a avait oubilé de mettre ces fonctions dans la balise <script>.
    pourtant tout marchait tres bien , et je ne me rappelle pas avoir modifié le code
    est ce quelq'un à une idée

Discussions similaires

  1. [Struts 1.1] fichier Messages.properties
    Par Snyper dans le forum Struts 1
    Réponses: 2
    Dernier message: 29/03/2009, 12h57
  2. [Struts] Message d'erreur Validate Action Form
    Par cosmos38240 dans le forum Struts 1
    Réponses: 7
    Dernier message: 26/10/2005, 11h05
  3. [STRUTS] ApplicationResources.properties "s'efface"
    Par Gildas Huart dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 17/05/2005, 18h34
  4. Validator Struts
    Par Canou dans le forum Struts 1
    Réponses: 2
    Dernier message: 14/10/2004, 16h39
  5. [STRUTS] fichier properties indépendant
    Par meufeu dans le forum Struts 1
    Réponses: 5
    Dernier message: 28/07/2004, 16h10

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