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 :

Probleme html:form avec tiles


Sujet :

Struts 1 Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Par défaut Probleme html:form avec tiles
    Bonjour,

    j'ai un petit souci. J'utilise les tiles pour importer des pages JSP. J'ai un formulaire comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <html:form action="<%=(String) session.getAttribute("contexte")%>">				<tiles:insert page="<%=contexte%>"/>						
    </html:form>
    Ca marche nickel, sauf quand il y a une erreur dans mon formulaire. Cette erreur est stockée dans un ActionErrors et est affichée dans ma pahe jps avec le famuex <html:erros/>.

    Voila l'erreur :

    org.apache.jasper.JasperException: Exception in JSP: /form/pronostiquesPronostiques.jsp:28

    25: %>
    26: <tr>
    27: <td colspan="7" align="center">
    28: <html:select property="journee" value ='<%=journee%>' onchange="javascript:this.form.submit();javascript:this.form.valider.value='0';">
    29: <%
    30: int nbJournees = userProperties.nbJournees();
    31: int i = 0;


    Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:504)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
    org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:274)
    org.apache.struts.action.RequestProcessor.internalModuleRelativeForward(RequestProcessor.java:1012)
    org.apache.struts.tiles.TilesRequestProcessor.internalModuleRelativeForward(TilesRequestProcessor.java:345)
    org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:980)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:255)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

    cause mère

    javax.servlet.ServletException: Cannot find bean under name org.apache.struts.taglib.html.BEAN
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:858)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
    org.apache.jsp.form.pronostiquesPronostiques_jsp._jspService(pronostiquesPronostiques_jsp.java:645)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
    org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:274)
    org.apache.struts.action.RequestProcessor.internalModuleRelativeForward(RequestProcessor.java:1012)
    org.apache.struts.tiles.TilesRequestProcessor.internalModuleRelativeForward(TilesRequestProcessor.java:345)
    org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:980)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:255)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    Apparament, c'est comme si mes balises html:form n'etaient plus detectés, et donc qu'il perd le bean correspondant et qu'il ne peut pas m'afficher les champs de mon formulaires !! (ex : <html:select...).

    Bizarre tout ca, car si il n'y a pas d'erreurs dans le formulaire, il n'y a pas ce probleme !

    Si vous avez des pistes.

    Merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Par défaut Petite précision
    Voila le code du formulaire avec le tiles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <html:form action="<%=(String) session.getAttribute("contexte")%>">
       <tiles:insert page="<%=contexte%>"/>
    </html:form>
    Je gère mes erreurs grace à des DynaActionForm. Quand je crée une erreur dans ces DynaActionForm, il me renvoit cette erreur.
    Comme les balises <html:form... sont à l'exterieur du tiles, je me dit qu'il perd le lien, ou qu'il gere seulement l'interieur de la page inclue grace au tiles.
    Ceci est une possibilité car lorsque je met les balises html:form dans la page inclu grace au tiles, si je valide le formulaire de la page du tiles alors seule la page inclue est affichée (et non toute la page ainsi que le tiles).

    Je pense donc qu'il doit y avoir un fonctionnement special avec les tiles et les formulaires.

    Merci de m'aider !

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Je pense plutôt que ton problème vient du nom que tu mets dans l'attribut action de form.
    Ce nom fait le lien (par l'intermédiaire du fichier struts-config.xml) avec le bean (ActionForm) rattaché à la page.
    Si tu n'as pas de correspondance, il ne trouve pas le bean page (ce qui t'arrive me semble-t-il...).
    Tu peux "by-passer" ce mécanisme en utilisant l'attribue "name" dans tes balises <html:select name="NomDuBeanActionForm" property="NomDePropriete" ... />

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Par défaut On progresse ...
    Merci pour ta reponse.

    Ta solution fonctionne, mais j'arrive au meme probleme que lorsque je mettais mes balises <html:form... dans ma page inclue grace au tiles.

    Du coup, lorsque je valide le formulaire et qu'il y a une erreur dans celui ci (traité dans mon DynaActionForm), alors seulement le contenu de ma page inclue grace a mon tiles est affichée, et non toute la page entiere qui contient le tiles. En effet, j'importe le contenu de ma page en fonction des actions utilisateurs, donc seul ce contenu est modifié.
    Lorsqu'il y a une erreur ds le form de ce contenu (inclu grace au tiles), seul ce contenu est affiché et le reste disparait ...

    Merci encore de m'aider.

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Peux-tu montrer (dans un premier temps) :

    - struts-config.xml
    - struts-tiles.xml
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Par défaut fichiers ...
    Ca vient peut etre de la : comment puis dire à tiles def.xml que je vais inclure une page dynamique (cad que ce ne sera pas toujours la meme !!).
    ==> <tiles:insert page="<%=contexte%>"/> ??

    Struts config :

    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
     
    <struts-config>
      <data-sources />
      <form-beans >
      	<form-bean name="loginForm" type="com.keyser.struts.action.LoginDynaForm">
    		<form-property name="login" type="java.lang.String" initial=""/>
    		<form-property name="password" type="java.lang.String" initial=""/>		
    	</form-bean>
        <form-bean name="inscriptionForm" type="com.keyser.struts.action.InscriptionDynaForm">
          <form-property name="password" type="java.lang.String" />
          <form-property name="passwordVerif" type="java.lang.String" />
          <form-property name="login" type="java.lang.String" />
        </form-bean>    
        <form-bean name="templateForm" type="com.keyser.struts.action.TemplateDynaForm">
          <form-property name="contexte" type="java.lang.String"/>
        </form-bean>
        <form-bean name="pronostiquesPronostiquesForm" type="com.keyser.struts.action.PronostiquesPronostiquesDynaForm">
          <form-property name="match2" type="java.lang.String" />
          <form-property name="match4" type="java.lang.String" />
          <form-property name="match8" type="java.lang.String" />
          <form-property name="valider" type="java.lang.String" />
          <form-property name="journee" type="java.lang.String" />
          <form-property name="match6" type="java.lang.String" />
          <form-property name="match5" type="java.lang.String" />
          <form-property name="match7" type="java.lang.String" />
          <form-property name="match9" type="java.lang.String" />
          <form-property name="match3" type="java.lang.String" />
          <form-property name="match1" type="java.lang.String" />
          <form-property name="match10" type="java.lang.String" />
        </form-bean>
      </form-beans>
     
      <global-exceptions />
      <global-forwards>
      </global-forwards>
      <action-mappings >
        <action		
    	      attribute="loginForm"
    	      input="/form/login.jsp"
    	      name="loginForm"
    	      path="/login"
    	      scope="session"
    	      type="com.keyser.struts.action.LoginAction"
    	      validate="true"
    		>
        	<forward name="display" path="tiles.contentpage" />
    		<forward name="failed" path="/form/login.jsp"/>
            <forward name="inscription" path="/form/inscription.jsp" />	
    	</action>
        <action
          attribute="inscriptionForm"
          input="/form/inscription.jsp"
          name="inscriptionForm"
          path="/inscription"
          scope="session"
          type="com.keyser.struts.action.InscriptionAction" 
    	  validate="true">
    		<forward name="failed" path="/form/inscription.jsp"/>
            <forward name="login" path="/form/login.jsp" />	
        </action>    
        <action
          attribute="templateForm"
          input="/form/template/template.jsp"
          name="templateForm"
          path="/template"
          scope="session"
          type="com.keyser.struts.action.TemplateAction"
    	  validate="false">
    		<forward name="display" path="/form/template/template.jsp"/>
            <forward name="login" path="/form/login.jsp" />	
        </action>
        <action               
          attribute="pronostiquesPronostiquesForm"
          input="/form/pronostiquesPronostiques.jsp"
          name="pronostiquesPronostiquesForm"
          path="/pronostiquesPronostiques"
          scope="session"
          type="com.keyser.struts.action.PronostiquesPronostiquesAction" 
    	  validate="true">	
    		<forward name="pronostiques" path="/form/template/template.jsp"/>  
    	</action>
      </action-mappings>
      <controller processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>
      <message-resources parameter="com.keyser.struts.ApplicationResources" />
      <plug-in className="org.apache.struts.tiles.TilesPlugin">
    	<set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />
    	<set-property property="moduleAware" value="true" />
    	<set-property property="definitions-parser-validate" value="true" />
      </plug-in>
    </struts-config>
    Tiles Def :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd">
    <tiles-definitions>
         <definition name="tiles.contentpage" page="/form/template/template.jsp">
         </definition>
    </tiles-definitions>

  7. #7
    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 aussi préciser la version de Struts que tu utilises ?

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Par défaut Version Struts 1.1
    C'est la 1.1

    Merci

  9. #9
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Waouuuuh ! Je crois que le plus simple serait de préciser ce que tu cherches à faire, j'ai l'impression que ce n'est pas clair (en tout cas pour moi )
    Je ne vois pas trop l'intérêt de tiles si c'est pour des sorties variables à l'intérieur...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Par défaut Mon but ....
    Voici quelques précisions ...

    En fait j'ai une page web classique avec un menu, et selon le bouton sur lequel l'utilisateur appui, le contenu change. Ce contenu change grace à l'insert du tiles qui est ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <html:form action="<%=(String) session.getAttribute("contexte")%>">
       <tiles:insert page="<%=contexte%>"/>
    </html:form>
    Ainis, j'ai le formulaire qui va bien et qui est défini dans mon struts-config.xml.

    Comme décrit au dessus ca ne marche pas lorsque j'ai une erreur dans mon formulaire, et seul le contenu est affiché et pas le reste de la page.

    Faut il dans le tiles-def.xml définir cette insertion du tiles ? Comment dans ce cas ?

    Ou est ce que je me suis avanturé dans quelquechose de pas faisable, ou alors qui ne correspond pas du tout à struts ...

    Merci encore ....

  11. #11
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Si je te suis bien, tu utilises tiles dans sa vocation première mais tu l'utilises mal (à mon sens)
    Si tu déplaces la balise formulaire dans la partie "variable" de tes pages, la question ne se posera plus.
    En gros, je fais comme ceci :

    - une page jsp qui "maquette" la structure de mes pages (top, left, body, bottom). Dans cette page, tu trouves les balise <tiles:insert attribute="contextMenu" /> avec juste des étiquettes cibles
    - une page jsp par étiquette (top.jsp, left.jsp, body.jsp, bottom.jsp)
    - une page jsp par body (là, tu en as autant que de types de sorties)

    Dans struts-tiles.xml
    - une définition globale de la page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <definition name="modele" path="/main.jsp" > 
      <put name="top"      value="/top.jsp" />
      <put name="left"     value="/left.jsp"/>
      <put name="body"     value="/welcome.jsp"/>
      <put name="bottom"   value="/bottom.jsp"/>
    </definition>
    - une définition par page (où tu ne changes que ce qu'il faut) qui hérite de "modele"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <definition name="modele.user.list" extends="modele">
      <put name="left"    value="/pages/user/left.jsp"/>
      <put name="body"    value="/pages/user/usersList.jsp"/>
    </definition>
    dans struts-config.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <action name="UsersListForm" parameter="fonction"
       path="/usersList" scope="session"
       type="com.clemessy.struts.user.UsersListAction">
           <forward name="default" path="modele.user.list"/>
           <forward name="error" path="modele.error"/>
    </action>
    et pour finir, le code d'une page (pour illustrer)
    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
     
    <%@ taglib uri="/WEB-INF/struts-layout.tld" prefix="layout" %>
    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
     
    <script>setActiveApplication("user");</script>
     
    <layout:form action="/usersList" focus="filterId" key="user.list">
    <jsp:include page="/commons/formParameters.jsp" flush="true"/>
     
        <layout:grid cols="2">
            <layout:cell colspan="2" styleClass="information"><layout:message key="user.list.filter.help"/></layout:cell>
            <layout:cell colspan="2" styleClass="information"><layout:message key="user.list.filter"/><br></layout:cell>
     
            <layout:text property="filterId" key="user.list.filterId" mode="E,E,E" styleClass="labelI10"/>
            <layout:cell/>
            <layout:text property="filterName" key="user.list.filterName" mode="E,E,E" styleClass="labelI10"/>
            <layout:submit reqCode="load"><layout:message key="button.search"/></layout:submit>
        </layout:grid>
     
        <layout:pager maxPageItems="15" sessionPagerId="usersListBlock" width="400" linksLocation="top" styleClass="pager">
            <layout:collection property="list" width="400" styleClass="column" styleClass2="column2" sortAction="client">
                <layout:collectionItem property="cn" title="user.list.user" width="100"  paramId="user" paramProperty="cn" href="userRights.do?fonction=userRights" sortable="true"/>
                <layout:collectionItem property="nomaff" title="user.list.name" sortable="true"/>
            </layout:collection>
            <logic:empty name="UsersListForm" property="list">
                <layout:cell>
                    <font class="warning"><layout:message key="user.list.empty"/></font>
                </layout:cell>
            </logic:empty>
        </layout:pager>
     
    </layout:form>
    C'est plus clair ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Par défaut ...
    Merci pour ton explication.

    Si je met les balises form dnas la page qui est incluse (dans le tiles) j'ai exactement le meme effet, c'est à dire que seul le contenu est affiché, et non le reste.

    Que dois je donc faire selon toi ?

    Merci encore.

  13. #13
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Peux-tu montrer l'état actuel de :
    - struts-tiles.xml
    - struts-config.xml
    - ta page "modele"
    - la page "applicative"

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Peux-tu montrer l'état actuel de :
    - struts-tiles.xml
    - struts-config.xml
    - ta page "modele"
    - la page "applicative"

    A+
    tiles-def.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd">
    <tiles-definitions>
         <definition name="tiles.contentpage" page="/form/template/template.jsp">
         </definition>
    </tiles-definitions>
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
     
    <struts-config>
      <data-sources />
      <form-beans >
      	<form-bean name="loginForm" type="com.keyser.struts.action.LoginDynaForm">
    		<form-property name="login" type="java.lang.String" initial=""/>
    		<form-property name="password" type="java.lang.String" initial=""/>		
    	</form-bean>
        <form-bean name="inscriptionForm" type="com.keyser.struts.action.InscriptionDynaForm">
          <form-property name="password" type="java.lang.String" />
          <form-property name="passwordVerif" type="java.lang.String" />
          <form-property name="login" type="java.lang.String" />
        </form-bean>    
        <form-bean name="templateForm" type="com.keyser.struts.action.TemplateDynaForm">
          <form-property name="contexte" type="java.lang.String"/>
        </form-bean>
        <form-bean name="pronostiquesPronostiquesForm" type="com.keyser.struts.action.PronostiquesPronostiquesDynaForm">
          <form-property name="match2" type="java.lang.String" />
          <form-property name="match4" type="java.lang.String" />
          <form-property name="match8" type="java.lang.String" />
          <form-property name="valider" type="java.lang.String" />
          <form-property name="journee" type="java.lang.String" />
          <form-property name="match6" type="java.lang.String" />
          <form-property name="match5" type="java.lang.String" />
          <form-property name="match7" type="java.lang.String" />
          <form-property name="match9" type="java.lang.String" />
          <form-property name="match3" type="java.lang.String" />
          <form-property name="match1" type="java.lang.String" />
          <form-property name="match10" type="java.lang.String" />
        </form-bean>
      </form-beans>
     
      <global-exceptions />
      <global-forwards>
      </global-forwards>
      <action-mappings >
        <action		
    	      attribute="loginForm"
    	      input="/form/login.jsp"
    	      name="loginForm"
    	      path="/login"
    	      scope="session"
    	      type="com.keyser.struts.action.LoginAction"
    	      validate="true"
    		>
        	<forward name="display" path="tiles.contentpage" />
    		<forward name="failed" path="/form/login.jsp"/>
            <forward name="inscription" path="/form/inscription.jsp" />	
    	</action>
        <action
          attribute="inscriptionForm"
          input="/form/inscription.jsp"
          name="inscriptionForm"
          path="/inscription"
          scope="session"
          type="com.keyser.struts.action.InscriptionAction" 
    	  validate="true">
    		<forward name="failed" path="/form/inscription.jsp"/>
            <forward name="login" path="/form/login.jsp" />	
        </action>    
        <action
          attribute="templateForm"
          input="/form/template/template.jsp"
          name="templateForm"
          path="/template"
          scope="session"
          type="com.keyser.struts.action.TemplateAction"
    	  validate="false">
    		<forward name="display" path="/form/template/template.jsp"/>
            <forward name="login" path="/form/login.jsp" />	
        </action>
        <action               
          attribute="pronostiquesPronostiquesForm"
          input="/form/pronostiquesPronostiques.jsp"
          name="pronostiquesPronostiquesForm"
          path="/pronostiquesPronostiques"
          scope="session"
          type="com.keyser.struts.action.PronostiquesPronostiquesAction" 
    	  validate="true">	
    		<forward name="pronostiques" path="/form/template/template.jsp"/>  
    	</action>
      </action-mappings>
      <controller processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>
      <message-resources parameter="com.keyser.struts.ApplicationResources" />
      <plug-in className="org.apache.struts.tiles.TilesPlugin">
    	<set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />
    	<set-property property="moduleAware" value="true" />
    	<set-property property="definitions-parser-validate" value="true" />
      </plug-in>
    </struts-config>
    ta page "modele" : template.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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> 
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>
    <%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
     
    <html:html>
    	<head>
    		<title>Keyser Pronostiques - Connection</title>    
    		<meta http-equiv="pragma" content="no-cache">
    		<meta http-equiv="cache-control" content="no-cache">
    		<meta http-equiv="expires" content="0">    
    		<meta http-equiv="keywords" content="keyser,pronostique,football">
    		<meta http-equiv="description" content="Keyser Pronostiques">
    		<link href="<html:rewrite page='/style.css'/>" rel="stylesheet" type="text/css">
    		<link rel="shortcut icon" href="<html:rewrite page='/img/ball.ico'/>">
    		<script language="javascript"> 		
    			function display(val)
    			{
    				document.forms[0].contexte.value=val;
    				document.forms[0].submit();
    			}	
    		</script>
    	</head>
    	<body>	
    		<%
    			String contexte = "/form/" + session.getAttribute("contexte") + ".jsp";
    			String menu = "/form/" + session.getAttribute("menu") + ".jsp";
    		%>		
    		<div id="banniere">
    			<img src="<html:rewrite page='/img/banniere.png'/>" alt="banniere" width="730" height="100" />
    		</div>
    		<div id="divNavigation">
    			<html:form action="/template">		
    				<input type="hidden" id="contexte" name="contexte"/>		
    				<ul id="navigation">
    					<li class="nav_gauche">
    						<html:button property ="pronostique" title="Pronostiquez" onclick="display('pronostiquesAccueil')">
    							<bean:message key="pronostiquesPronostiques"/>	
    						</html:button>
    					</li>
    					<li class="nav_gauche">					
    						<html:button property ="ligue1" title="Suivre la ligue 1" onclick="display('ligue1Accueil')">
    							<bean:message key="ligue1Accueil"/>
    						</html:button>
    					</li>
    					<li class="nav_droite">									
    						<html:button property ="quitter" title="Quitter le site" onclick="display('quitter')">
    							Quitter
    						</html:button>
    					</li>
    				</ul>			
    			</html:form>
    		</div>
    		<div id="conteneur">
    			<div id="divMenu">
    				<tiles:insert page='<%=menu%>'/>	
    				<ul id="infos">
    					<li class="user"><%=(String) session.getAttribute("login")%></li>
    					<li>Classement: <strong><%=""+session.getAttribute("classementUser")%></strong></li>
    					<li>Points: <strong><%=""+session.getAttribute("nbPoints")%></strong></li>
    					<li>Nb pronos: <strong><%=""+session.getAttribute("nbJourneesPart")%></strong></li>
    				</ul>
    			</div>		
    			<div id="cadre">
    				<div id="cadre_haut"></div>
    				<div id="cadre_centre">
    					<div id="contenu">				
    						<tiles:insert page="<%=contexte%>"/>
    					</div>		
    				<div id="cadre_bas"></div>				
    			</div>			
    				<div id="pied_de_page">
    					<p><em><strong>&copy; Keyser   2007</strong></em></p>
    				</div>
    			</div>
    		</div>
    	</body>
    </html:html>
    la page "applicative" : pronostiquesPronostiques.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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
     
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> 
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>
    <%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
     
    <jsp:useBean id="userProperties" class="com.keyser.struts.Bean.PagePropertiesBean" scope="session">
    	<jsp:setProperty property="*" name="userProperties"/>
    </jsp:useBean>
     
    	<html:form action="/pronostiquesPronostiques">	
    			<input type="hidden" name="valider" id="valider"/>
    			<table class="journees" style="width:400px">
    				<colgroup>
    					<col width="50"/>
    					<col width="100"/>
    					<col width="20"/>
    					<col width="20"/>
    					<col width="20"/>
    					<col width="100"/>
    					<col width="50"/>
    				</colgroup>
    				<%
    				String login = (String) session.getAttribute("login");
    				String journee = (String) session.getAttribute("journee");
    				String etat = userProperties.getEtat(journee, login);
    				System.out.println("etat : " + etat);
    				Boolean userAPronostique = userProperties.userAPronostique(journee, login);
    				%>
    				<tr>
    					<td colspan="7" align="center">
    						<html:select name="pronostiquesPronostiquesForm" property="journee" value ='<%=journee%>' onchange="javascript:this.form.submit();javascript:this.form.valider.value='0';">							
    							<%
    								int nbJournees = userProperties.nbJournees();
    								int i = 0;
    								while(i < nbJournees){
    								%>
    								<html:option value='<%=""+(i+1)%>'><%=""+(i+1)%><%if((i+1)==1){%>ère journée<%}else{%>ème journée<%}%></html:option>
    								<%				
    									i++;
    								}
    							%>
    						</html:select>
    					</td>
    				</tr>
    				<tr><td colspan="7">&nbsp;</td></tr>
    				<%
    				if(etat.equals("1")){
    				%>
    				<tr>
    					<th colspan="2">Equipe 1</th>
    					<th>1</th>
    					<th>N</th>
    					<th>2</th>
    					<th colspan="2">Equipe 2</th>
    				</tr>
    				<%
    				}
    				%>
    				<%
    				int i =0;			
    				String[][] tabMatchs = userProperties.afficherMatch(journee);
    				while(i < tabMatchs.length){					
    					String resultatMatch = userProperties.getResultatMatch(journee, ""+(i+1));
    				%>
    				<tr>
    					<td align="left">
    						<img src='<%=tabMatchs[i][1]%>'>
    					</td>
    					<td align="center">						
    						<%if(resultatMatch.equals("1")){%>
    							<strong>
    						<%}%>	
    						<%=tabMatchs[i][0]%>					
    						<%if(resultatMatch.equals("1")){%>
    							</strong>
    						<%}%>	
    					</td>
    					<%
    					if(etat.equals("0")){
    						String pronoMatch = "";
    						if(userAPronostique){
    							pronoMatch = userProperties.getPronoMatch(journee, login, ""+(i+1));
    						}
    						%>
    						<td>
    						<%												
    						  if(pronoMatch.equals("1") && resultatMatch.equals("1")){									
    							%><img class="image" src="<html:rewrite page='/img/rond_vert.png'/>"><%
    						  }
    						  if(pronoMatch.equals("1") && !resultatMatch.equals("1")){	
    						  	%><img class="image" src="<html:rewrite page='/img/croix.png'/>"><%
    						  }
    						  if(!pronoMatch.equals("1") && resultatMatch.equals("1")){
    							%><img class="image" src="<html:rewrite page='/img/rond_rouge.png'/>"><%
    						  }					 				
    						 %>							 
    							<img src="<html:rewrite page='/img/1.png'/>">
    						</td>
    						<td>
    							<%if(pronoMatch.equals("N") && resultatMatch.equals("N")){									
    									%><img class="image" src="<html:rewrite page='/img/rond_vert.png'/>"><%
    							  }
    							  if(pronoMatch.equals("N") && !resultatMatch.equals("N")){	
    							  	%><img class="image" src="<html:rewrite page='/img/croix.png'/>"><%
    							  }
    							  if(!pronoMatch.equals("N") && resultatMatch.equals("N")){
    								%><img class="image" src="<html:rewrite page='/img/rond_rouge.png'/>"><%
    							  }%>
    							<img src="<html:rewrite page='/img/N.png'/>">
    						</td>
    						<td>
    							<%if(pronoMatch.equals("2") && resultatMatch.equals("2")){									
    									%><img class="image" src="<html:rewrite page='/img/rond_vert.png'/>"><%
    							  }
    							  if(pronoMatch.equals("2") && !resultatMatch.equals("2")){	
    							  	%><img class="image" src="<html:rewrite page='/img/croix.png'/>"><%
    							  }
    							  if(!pronoMatch.equals("2") && resultatMatch.equals("2")){
    								%><img class="image" src="<html:rewrite page='/img/rond_rouge.png'/>"><%
    							  }%>
    							<img src="<html:rewrite page='/img/2.png'/>">
    						</td>
    						<%	
    					}
    					else if(etat.equals("1")){
    					%>
    						<%String match = "match" + (i+1); %>
    						<td>
    							<html:radio name="pronostiquesPronostiquesForm" property='<%=match%>' value="1"></html:radio>
    						</td>
    						<td>
    							<html:radio name="pronostiquesPronostiquesForm" property='<%=match%>' value="N"></html:radio>
    						</td>
    						<td>
    							<html:radio name="pronostiquesPronostiquesForm" property='<%=match%>' value="2"></html:radio>
    						</td>
    					<%					
    					}
    					else if(etat.equals("2")){
    						String pronoMatch = "";
    						if(userAPronostique){
    							pronoMatch = userProperties.getPronoMatch(journee, login, ""+(i+1));
    						}
    						%>
    						<td>
    							<%if(pronoMatch.equals("1")){%><img class="image" src="<html:rewrite page='/img/croix.png'/>"><%}%><img src="<html:rewrite page='/img/1.png'/>">
    						</td>
    						<td>
    							<%if(pronoMatch.equals("N")){%><img class="image" src="<html:rewrite page='/img/croix.png'/>"><%}%><img src="<html:rewrite page='/img/N.png'/>">
    						</td>
    						<td>
    							<%if(pronoMatch.equals("2")){%><img class="image" src="<html:rewrite page='/img/croix.png'/>"><%}%><img src="<html:rewrite page='/img/2.png'/>">
    						</td>
    						<%					
    					}
    					else if(etat.equals("3")){					
    						%>
    						<td>
    							<img src="<html:rewrite page='/img/1.png'/>">
    						</td>
    						<td>
    							<img src="<html:rewrite page='/img/N.png'/>">
    						</td>
    						<td>
    							<img src="<html:rewrite page='/img/2.png'/>">
    						</td>
    						<%	
    					}
    					%>
    					<td align="center">
    						<%if(resultatMatch.equals("2")){%>
    							<strong>
    						<%}%>	
    						<%=tabMatchs[i][2]%>
    						<%if(resultatMatch.equals("2")){%>
    							</strong>
    						<%}%>	
    					</td>
    					<td align="right">	
    						<img src='<%=tabMatchs[i][3]%>'>
    					</td>
    					<%
    					i++;
    				}
    				%>
    				<tr>
    					<td colspan="7" align="center">		
    						<%
    						if(etat.equals("1")){
    						%>						
    						<html:submit property="monAction" styleClass="btn_taille_egale" onclick="javascript:this.form.valider.value='1';">	
    							<%
    							if(userAPronostique){
    							%>
    								Modifier Pronostics
    							<%
    							}
    							else{
    							%>								
    								Pronostiquer	
    							<%
    							}
    							%>			
    						</html:submit>
    						<%
    						}
    						%>
    					</td>
    				</tr>
    				<tr>
    					<td colspan="7" align="center" class="errors">						
    						<html:errors/>
    					</td>
    				</tr>
    				<tr>
    					<td colspan="7" align="center" class="messages">
    						<html:messages id="idMessage" message="true">
    	   						<bean:write name="idMessage"/>
    						</html:messages>
    					</td>
    				</tr>
    			</table>
    		</html:form>
    Merci !!

  15. #15
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    LE MODELE
    
    <body>
    
    <table cellpadding="0" cellspacing="0" width="100%">
    <col span="1" width="150">
    <tr>
    <td colspan="2">
    <tiles:insert attribute="top" flush="true"/>
    </td>
    </tr>
    
    <tr>
    <td colspan="2">
    <tiles:insert attribute="topMenu" flush="true"/>
    </td>
    </tr>
    
    <tr>
    <td style="vertical-align:top;">
    <tiles:insert attribute="left" flush="true"/>
    </td>
    <td style="padding-left:10px; padding-top:10px; padding-right:10px; vertical-align:top;">
    <tiles:insert attribute="body" flush="true"/>
    </td>
    </tr>
    </table>
    
    
    <div id="bottomArea" style="position:absolute; z-index=0;">
    <tiles:insert attribute="bot" flush="true"/>
    </div>
    
    </body>
    
    
    LA DEFINITION TILES
    
    <definition name="modele" path="/modele/main.jsp">
      <put name="top"      value="/modele/top.jsp"/>
      <put name="topMenu"  value="/modele/topMenu.jsp"/>
      <put name="left"     value="/modele/left.jsp"/>
      <put name="body"     value="/modele/welcome.jsp"/>
      <put name="bot"      value="/modele/bottom.jsp"/>
    </definition>
    
    LES DEFINITIONS "APPLICATIVES"
    
     <definition name="modele.basecapteur" extends="modele">
      <put name="topMenu" value="/modele/topDefaultMenu.jsp"/>
      <put name="left"    value="/pages/baseCapteur/left.jsp"/>
      <put name="body"    value="/pages/baseCapteur/home.jsp"/>
     </definition>
    
     <definition name="domaines.liste" extends="modele.basecapteur">
      <put name="body" value="/pages/baseCapteur/domaine/listeDomaines.jsp"/>
     </definition>
     <definition name="domaine.detail" extends="modele.basecapteur">
      <put name="body" type="page" value="/pages/baseCapteur/domaine/domaine.jsp"/>
     </definition>
     
    EXTRAIT DE STRUTS-CONFIG.XML
    ...
    
    <action input="domaines.liste" name="ListeDomainesForm"
       parameter="action" path="/listeDomaines" scope="session" type="clemessy.struts.basecapteur.actions.domaine.ListeDomainesAction">
       <forward name="default" path="domaines.liste"/>
       <forward name="error" path="domaines.liste"/>
    </action>
     
    <action input="domaine.detail" name="DomaineForm" parameter="action"
       path="/domaine"
       type="clemessy.struts.basecapteur.actions.domaine.DomaineAction" validate="true">
       <forward name="default" path="domaine.detail"/>
       <forward name="error" path="domaine.detail"/>
    </action>
    C'est la sortie du contrôleur struts qui détermine la définition tiles à utiliser, le lien se fait sur le nom de la définition (c'est simple et efficace)

    J'espère avoir clarifié ton problème...
    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Par défaut ok je pense voir ce que tu dis ...
    ... mais comment corriger mon problème avec ce que tu me dis ??

    merci ...

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Par défaut Comment faire ?
    Salut,

    ce que je ne comprends pas dans ton exemple, c'est comment tu vas lui indiquer de prendre le tiles de l'applicatif et non du modele :
    par exemple si tu fais <tiles:insert attribute="topMenu" flush="true"/>, il va prendre celui du modele ? et non celui de l'applicatif : <put name="topMenu" value="/modele/topDefaultMenu.jsp"/>.

    Ce que je veux en gros, c'est que selon le contexte, diriger vers le bon contenu. Par exemple comme ca, mais je ne sais pas comment le faire fonctionner et dire aux tiles que le content depend du contexte :

    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
     
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd">
    <tiles-definitions>
         <definition name="template" page="/form/template/template.jsp">
         </definition>
         <definition extends="template" name="pronostiquesPronostiques">
    		<put name="content" value="/form/pronostiquesPronostiques.jsp" />
    	</definition>	
    	<definition extends="template" name="pronostiquesAccueil">
    		<put name="content" value="/form/pronostiquesAccueil.jsp" />
    	</definition>
    	<definition extends="template" name="pronostiquesClassement">
    		<put name="content" value="/form/pronostiquesClassement.jsp" />
    	</definition>
    </tiles-definitions>
    Merci encore

  18. #18
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Tout simplement dans la déclaration de tes actions dans struts-config.xml.
    Tu auras quelque chose dans ce genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ...
    <action path="/pronostiques" ...>
       <forward name="succes" path="pronostiquesPronostiques"> <-- là, tu mets le nom de la définition, c'est tout
    ...
    </action>
    ...
    En gros, à la place de mettre une référence de page jsp, tu mets le nom de la définition tiles.
    Tu peux également utiliser le nom tiles pour l'attribut input.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Par défaut le probleme ne vient pas du tiles ...
    Désolé d'avoir mis autant de temps à voir que le pb ne venait pas du tiles !!

    En fais lorsque j'enleve le tiles et que je met mon contenu directement dans ma page (simple copier/coller) ... je m'apercois que j'ai le meme probleme : lorsque je trouve une erreur dans mon DynaActionForm alors seul le contenu est affiché ...

    En gros, ma page a 2 formulaires imbriqués, ce qui selon moi peut poser probleme.

    Cependant ca marche parfaitement si il n'y a pas d'erreurs lors de la validation du formulaire.

    En gros, voila un peu de code tres simplifié pour comprendre le pb :

    template.jsp :

    <html:form action="TemplateAction">
    <html:form action="PronostiquesAction"> ... </html:form>
    </html:form>

    Or ca marche nickel lorsque le form PronostiquesAction ne contient pas d'erreur à la validation grace à ce qu'il y a dans le struts-config.xml (<forward name="pronostiques" path="/form/template/template.jsp"/> ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        <action               
          attribute="pronostiquesPronostiquesForm"
          input="/form/pronostiquesPronostiques.jsp"
          name="pronostiquesPronostiquesForm"
          path="/pronostiquesPronostiques"
          scope="session"
          type="com.keyser.struts.action.PronostiquesPronostiquesAction" 
    	  validate="true">	
    		<forward name="pronostiques" path="/form/template/template.jsp"/>  
    	</action>
    Par contre quand il y a une erreur, struts me l'indique (via <html:errors/>), et ne m'affiche plus que le contenu du formulaire PronostiquesAction.

    Je voudrais donc savoir si il y a un moyen de dire à Struts que lorsqu'il y a une erreur (géré avec mon DynaActionForm renvoyant un ActionErrors), qu'il m'affiche tout de meme template.jsp.

    Merci d'avance, et désolé encore ....

  20. #20
    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
    Lorsqu'il y a une erreur de validation, Struts redirige vers la page spécifiée dans l'attribut input dans le mapping de ton Action.
    Il faut donc modifier la valeur de l'attribut input.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Probleme html:link avec un LookupDispatchAction
    Par khanou dans le forum Struts 1
    Réponses: 2
    Dernier message: 14/06/2007, 00h17
  2. [CSS&HTML]Problem de hauteur avec un tableau
    Par pierrot10 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 27/09/2006, 19h21
  3. [HTML] Probleme boutons-images avec firefox
    Par baba_star dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 09/07/2006, 17h49
  4. Problème avec HTML::Form
    Par Woufeil dans le forum Web
    Réponses: 1
    Dernier message: 05/06/2006, 13h59
  5. html:form avec un name dynamic
    Par zekmek dans le forum Struts 1
    Réponses: 5
    Dernier message: 06/12/2005, 15h40

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