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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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>

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

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