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:
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 :
Citation:
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
ok je pense voir ce que tu dis ...
... mais comment corriger mon problème avec ce que tu me dis ??
merci ...
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:
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 ....