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 :

Plusieurs compositions avec les DynaValidatorForm


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 51
    Par défaut Plusieurs compositions avec les DynaValidatorForm
    Bonjour,

    J'ai un problème que vous pourriez peut etre m'aider à résoudre.

    J'ai le modèle suivant avec les 3 classes

    • Animal
      • name (de type String)
      • type (String)
      • owner (objet de type Person ci-dessous)
    • Person
      • name (de type String)
      • email (String)
      • adress (de type Adress ci-dessous)
    • Adress (avec tous ses attributs de type String
      • road
      • roadNumber
      • city
      • zipCode


    Je crois que j'ai un problème dans mon fichier Struts-config.xml. La partie qui poserait problème est la déclaration des bean.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    <!-- ================================================ Form Bean Definitions -->
     
    	<form-beans>
    		<form-bean name="animalForm"
    			type="org.apache.struts.validator.DynaValidatorForm">
    			<form-property name="name" type="java.lang.String"></form-property>
    			<form-property name="type" type="java.lang.String"></form-property>
    			<!--<form-property name="male" type="java.lang.String"></form-property>-->
    			<form-property name="owning" type="com.exians.model.Person"></form-property>
    			<form-property name="owning.adress" type="com.exians.model.Adress"></form-property>
    		</form-bean>
    	</form-beans>
    La partie que je sais pas faire est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    			<form-property name="owning.adress" type="com.exians.model.Adress"></form-property>
    et fait référence à ce qu'un proprio d'animal a une adresse. Comment déclarer cette partie correctement?

    Je vous remercie d'avance

  2. #2
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 50
    Par défaut
    C'est pas très clair tout ça !

    Regarde du côté de la bibliothèque de balises (taglib en anglais) Struts Nested.

  3. #3
    Expert confirmé

    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
    Par défaut
    As-tu fait un test en faisant référence au bean Adress simplement comme ceci dans la définition de ton form-bean :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <form-property name="adress" type="com.exians.model.Adress"/>
    et en codant ceci dans le fichier validation.xml :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form name="animalForm">
    	<field property="owning.adress.road" depends="required">
                   ...
    	</field>
    </form>

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 51
    Par défaut
    Je lis un bouquin et je crois que l'auteur utilise une version antérieure à la 1.3.5 de struts.

    Et il s'agit de validation dynamique sur plusieurs pages.

    Le fichier 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
    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
    53
    54
    55
    56
    57
    58
    59
    <form name="/animal">
    			<field property="name" depends="required">
    				<arg key="animal.errors.name" />
    			</field>
    			<field property="type" depends="required">
    				<arg key="animal.errors.type" />
    			</field>
    			<!-- <field property="male" depends="required,yesno">
    				<arg key="animal.errors.male" />
    				</field> -->
    		</form>
    		<form name="/owningl">
    			<field property="owning.name" depends="required">
    				<arg key="animal.errors.owning.name" />
    			</field>
    			<field property="owning.email" depends="required,email">
    				<arg key="animal.errors.owning.email" />
    			</field>
    			<field property="owning.age"
    				depends="required,minlength,maxlength">
    				<arg key="animal.errors.owning.age" />
    				<var>
    					<var-name>minlength</var-name>
    					<var-value>1</var-value>
    				</var>
    				<var>
    					<var-name>maxlength</var-name>
    					<var-value>2</var-value>
    				</var>
    			</field>
    		</form>
    		<form name="/adress">
    			<field property="owning.adress.road" depends="required">
    				<arg key="animal.errors.owning.adress.road" />
    			</field>
    			<field property="owning.adress.roadNumber"
    				depends="required,minlength,maxlength">
    				<arg key="animal.errors.owning.adress.roadNumber" />
    				<var>
    					<var-name>minlength</var-name>
    					<var-value>1</var-value>
    				</var>
    				<var>
    					<var-name>maxlength</var-name>
    					<var-value>2</var-value>
    				</var>
    			</field>
    			<field property="owning.adress.city" depends="required">
    				<arg key="animal.errors.owning.adress.city" />
    			</field>
    			<field property="owning.adress.zipCode"
    				depends="required,mask">
    				<arg key="animal.errors.owning.adress.zipCode" />
    				<var>
    					<var-name>mask</var-name>
    					<var-value>${postalCode}</var-value>
    				</var>
    			</field>
    		</form>
    Vous verrez que le nom du form dans validation.xml reprend l'url de l'action. C'est un conseil du bouquin, mais ça ne marche pas.


    Mon fichier struts-config.xml

    la partie form-bean
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <form-bean name="animalForm"
    			type="org.apache.struts.validator.DynaValidatorForm">
    			<form-property name="name" type="java.lang.String"></form-property>
    			<form-property name="type" type="java.lang.String"></form-property>
    			<!--<form-property name="male" type="java.lang.String"></form-property>-->
    			<form-property name="owning"
    				type="com.exians.model.Person">
    			</form-property>
    			<form-property name="owning.adress"
    				type="com.exians.model.Adress">
    			</form-property>
    		</form-bean>
    Ici je me dis qu'il faut utiliser owning.adress parce que adress est un attribut de owning.

    Et j'ai codé la proproposition précédente d'utiliser adress au lieu de owning.adress: cela ne marche pas car il trouve pas owning.adress.road

    la partie actions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <action path="/animal" name="animalForm" attribute="animal"
    			input="/pages/animal.jsp" forward="/pages/owning.jsp"
    			validate="true">
    		</action>
    		<action path="/owning" name="animalForm" attribute="animal"
    			input="/pages/owning.jsp" forward="/pages/adress.jsp"
    			validate="true">
    		</action>
    		<action path="/adress" name="animalForm" attribute="animal"
    			input="/pages/adress.jsp" forward="/pages/result.jsp"
    			validate="true">
    		</action>
    Merci de m'aider.

  5. #5
    Expert confirmé

    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
    Par défaut
    Peux-tu montrer le code de la jsp et le message d'erreur que tu obtiens ?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 51
    Par défaut
    Citation Envoyé par c_nvy
    Peux-tu montrer le code de la jsp et le message d'erreur que tu obtiens ?

    Code d'animal.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
    <html:form action="/animal">
    	<bean:message key="animal.name" />
    	<nested:text property="name"></nested:text>
    	<html:errors property="name" />
    	<br>
    	<bean:message key="animal.type" />
    	<nested:text property="type"></nested:text>
    	<html:errors property="type" />
    	<br>
    	<bean:message key="animal.male" />
    	<nested:text property="male"></nested:text>
    	<html:errors property="male" />
    	<br>
    	<html:submit></html:submit>
    </html:form>
    Code d'owning.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
    <html:form action="/owning">
    	<nested:root name="animal">
    		<bean:message key="animal.name" />
    		<nested:write property="name" />
    		<br>
    		<bean:message key="animal.type" />
    		<nested:write property="type" />
    		<br>
    		<bean:message key="animal.owning.name" />
    		<nested:text property="owning.name"></nested:text>
    		<html:errors property="owning.name" />
    		<br>
    		<bean:message key="animal.owning.age" />
    		<nested:text property="owning.age"></nested:text>
    		<html:errors property="owning.age" />
    		<br>
    		<bean:message key="animal.owning.email" />
    		<nested:text property="owning.email"></nested:text>
    		<html:errors property="owning.email" />
    		<br>
    	</nested:root>
    	<html:submit></html:submit>
    </html:form>
    Code de adress.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
    <html:form action="/adress">
    	<nested:root name="animal">
    		<bean:message key="animal.name" />
    		<nested:write property="name" />
    		<br>
    		<bean:message key="animal.type" />
    		<nested:write property="type" />
    		<br>
    		<bean:message key="animal.owning.name" />
    		<nested:write property="owning.name" />
    		<br>
    		<bean:message key="animal.owning.email" />
    		<nested:write property="owning.email" />
    		<br>
    		<bean:message key="animal.owning.age" />
    		<nested:write property="owning.age" />
    		<br>
    		<bean:message key="animal.owning.adress.road" />
    		<nested:text property="owning.adress.road"></nested:text>
    		<html:errors property="owning.adress.road" />
    		<br>
    		<bean:message key="animal.owning.adress.roadNumber" />
    		<nested:text property="owning.adress.roadNumber"></nested:text>
    		<html:errors property="owning.adress.roadNumber" />
    		<br>
    		<bean:message key="animal.owning.adress.city" />
    		<nested:text property="owning.adress.city"></nested:text>
    		<html:errors property="owning.adress.city" />
    		<br>
    		<bean:message key="animal.owning.adress.zipCode" />
    		<nested:text property="owning.adress.zipCode"></nested:text>
    		<html:errors property="owning.adress.zipCode" />
    		<br>
    	</nested:root>
    	<html:submit></html:submit>
    </html:form>
    Code de result.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
    <nested:root name="animal">
    	<bean:message key="animal.name" />
    	<bean:write name="animal" property="name" />
    	<br>
    	<bean:message key="animal.type" />
    	<bean:write name="animal" property="type" />
    	<br>
    	<bean:message key="animal.owning.name" />
    	<bean:write name="animal" property="owning.name" />
    	<br>
    	<bean:message key="animal.owning.email" />
    	<bean:write name="animal" property="owning.email" />
    	<br>
    	<bean:message key="animal.owning.age" />
    	<bean:write name="animal" property="owning.age" />
    	<br>
    	<bean:message key="animal.owning.adress.road" />
    	<bean:write name="animal" property="owning.adress.road" />
    	<br>
    	<bean:message key="animal.owning.adress.roadNumber" />
    	<bean:write name="animal" property="owning.adress.roadNumber" />
    	<br>
    	<bean:message key="animal.owning.adress.city" />
    	<bean:write name="animal" property="owning.adress.city" />
    	<br>
    	<bean:message key="animal.owning.adress.zipCode" />
    	<bean:write name="animal" property="owning.adress.zipCode" />
    	<br>
    </nested:root>
    Le message d'erreur etait dû au fait que dans la classe Person.java, je n'avait pas instancié l'attribut adress. NullPointerException donc ... C'est corrigé.

    Par contre la validation ne marche pas. Aucun champ n'est validé. ça doit provenir des règles de validation dans validation.xml ->> les path dans les balises

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/01/2015, 14h59
  2. [Batch] souci pour passer plusieurs commandes avec les outils plink et psftp
    Par Macfplus dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 09/05/2014, 10h12
  3. Réponses: 19
    Dernier message: 30/07/2013, 16h43
  4. Réponses: 2
    Dernier message: 21/10/2012, 23h35
  5. Requete sur plusieurs table avec les memes champs
    Par broule dans le forum Langage SQL
    Réponses: 4
    Dernier message: 05/02/2010, 19h57

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