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] xhtml et html:javascript


Sujet :

Struts 1 Java

  1. #1
    Futur Membre du Club
    Profil pro
    software developer
    Inscrit en
    Avril 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : software developer

    Informations forums :
    Inscription : Avril 2004
    Messages : 9
    Points : 7
    Points
    7
    Par défaut [Validator] xhtml et html:javascript
    Bonjour à tous,

    Dans le cadre d'un projet utilisant struts 1.3.5, je dois faire en sorte de conformer mon application web au standard xhtml 1.0 strict.

    Malheureusement je me retrouve avec un problème récurrent dès que je met en place des contrôles sur mes champs de formulaire avec struts validator.

    En effet malgré le fait de fixer l'attibut cdata à true dans html:javascript et xhtml à true dans html:html, il ne m'ajoute jamais les <![CDATA[ ... ]]> autour de mes codes javascript automatiquement générés

    J'ai essayé en un seul fichier et là ca fonctionne. Le problème vient donc de Tiles... Voyez vous un moyen de régler ça ?

    ma 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
    <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
    <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
     
    <html:javascript formName="lostPasswordForm" cdata="true" staticJavascript="false" scriptLanguage="false" />
     
    <div style="text-align: center;margin: 50px;font-weight: bold;"><bean:message key="jsp.login.lost-password" /></div>
    <div style="text-align: center;">
    	<div class="errors-list">
    		<div class="error"><html:errors /></div>
    	</div>
    	<html:form action="sendLostPassword.do" method="post" onsubmit="return validateLostPasswordForm(this)">
    		<table style="width: 100%;">
    			<tr>
    				<td colspan="2" style="padding-bottom: 20px;">
    					<bean:message key="jsp.login.lost-password.saisie" />&nbsp;:
    				</td>
    			</tr>
    			<tr>
    				<td style="text-align: right;width: 50%;padding-bottom: 10px;"><bean:message key="jsp.login.lost-password.question" />&nbsp;:</td>
    				<td style="text-align: left;padding-bottom: 10px;padding-left: 10px;"><html:text property="questionPwd" /></td>
    			</tr>
    			<tr>
    				<td style="text-align: right; width: 50%;padding-bottom: 10px;"><bean:message key="jsp.login.lost-password.response" />&nbsp;:</td>
    				<td style="text-align: left;padding-bottom: 10px;padding-left: 10px;"><html:text property="responsePwd" /></td>
    			</tr>
    			<tr>
    				<td colspan="2" style="padding-top: 20px;"><input type="submit" value="Valider" /></td>
    			</tr>
    		</table>
    	</html:form>
    </div>
    mon layout tiles :
    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
    <?xml version="1.0" encoding="ISO-8859-1" ?>
     
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
    <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
    <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
     
    <html:html xhtml="true">
    	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    		<title><tiles:getAsString name="title"/></title>
    		<link rel="stylesheet" type="text/css" media="all" href="css/styles.css" />
        </head>
    	<body>
    		<table class="stf">
    			<tr>
    			  	<td><tiles:insert attribute="header"/></td>
    			</tr>
    			<tr>
    				<td><tiles:insert attribute="body"/></td>
    			</tr>
    			<tr>
    			  	<td><tiles:insert attribute="footer"/></td>
    			</tr>
    		</table>
    	</body>
    </html:html>
    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
    <?xml version="1.0" encoding="ISO-8859-1" ?>
     
    <!DOCTYPE form-validation PUBLIC
            "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.3.0//EN"
            "http://jakarta.apache.org/commons/dtds/validator_1_3_0.dtd">
     
    <form-validation>
        <formset>
     
            <form name="lostPasswordForm">
                <field property="questionPwd"
                        depends="required">
                    <arg   key="validator.questionPwd"/>
                </field>
                <field property="responsePwd"
                        depends="required">
                    <arg   key="validator.responsePwd"/>
                </field>
            </form>
     
        </formset>
    </form-validation>
    mon tiles-def.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 tiles-definitions PUBLIC
                  "-//Apache Software Foundation//DTD Tiles Configuration 1.3//EN"
                  "http://struts.apache.org/dtds/tiles-config_1_3.dtd">
     
    <tiles-definitions>
    	<!-- ==== home / login tiles definition ==== -->
    	<definition name=".root.layout" path="/WEB-INF/jsp/layouts/classicLayout.jsp">
    		<put name="title" 	value="Système de Transfert de Fichiers"	/>
    	    <put name="header" 	value="/WEB-INF/jsp/layouts/commons/header.jsp"	/>
    	    <put name="body" 	value="/WEB-INF/jsp/login.jsp"	/>
    	    <put name="footer" 	value="/WEB-INF/jsp/layouts/commons/footer.jsp"	/>
    	</definition>
     
    	<definition name=".lost-password" extends=".root.layout">
    		<put name="title" 	value="Récupération de mot de passe" />
    	    <put name="body" 	value="/WEB-INF/jsp/lost-password.jsp"	/>
    	</definition>
    </tiles-definitions>
    Merci d'avance pour l'aide

  2. #2
    Futur Membre du Club
    Profil pro
    software developer
    Inscrit en
    Avril 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : software developer

    Informations forums :
    Inscription : Avril 2004
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Bon suite à mon problème, j'ai cherché à mettre mes deux balise html:html et html:javascript dans la même page jsp puisque y'a qu'ainsi que ça marche.

    Voilà la solution que j'ai adopté :

    Tout d'abord j'ai viré la balise <html:javascript ... /> de ma page jsp pour la transférer dans celle contenant mon layout tiles.
    Ensuite j'ai crée un nouvel attribut "form" dans ma définition ".lost-password" dans mon tiles-def.xml qui contient le nom du formulaire.
    Enfin j'ai utilisé la balise "<tiles:importAttribute />" dans mon layout tiles pour mettre mon attribut "form" dans le pageContext, et ensuite j'ai retourné sa valeur.

    En espérant que ça en aide certains.
    Et si quelqu'un connait à une autre solution à proposer, j'suis reste preneur.


    mon classicLayout.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
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
    <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
    <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
    <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
    
    <%-- Push component attributes in page context --%>
    <tiles:importAttribute />
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    
    <html:html xhtml="true">
    	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    		<title><tiles:getAsString name="title" ignore="true" /></title>
    		<link rel="stylesheet" type="text/css" media="all" href="css/styles.css" />
    		<logic:present name="form">
    			<html:javascript formName="<%= (String) pageContext.getAttribute("form") %>" cdata="true" staticJavascript="false" scriptLanguage="false" />
    		</logic:present>
        </head>
    	<body>
    		<table class="stf">
    			<tr>
    			  	<td><tiles:insert attribute="header"/></td>
    			</tr>
    			<tr>
    				<td><tiles:insert attribute="body"/></td>
    			</tr>
    			<tr>
    			  	<td><tiles:insert attribute="footer"/></td>
    			</tr>
    		</table>
    	</body>
    </html:html>
    mon tiles-def.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
    <tiles-definitions>
    	<!-- ==== home / login tiles definition ==== -->
    	<definition name=".root.layout" path="/WEB-INF/jsp/layouts/classicLayout.jsp">
    		<put name="title" 	value="Système de Transfert de Fichiers"	/>
    	    <put name="header" 	value="/WEB-INF/jsp/layouts/commons/header.jsp"	/>
    	    <put name="body" 	value="/WEB-INF/jsp/login.jsp"	/>
    	    <put name="footer" 	value="/WEB-INF/jsp/layouts/commons/footer.jsp"	/>
    	</definition>
    
    	<definition name=".lost-password" extends=".root.layout">
    		<put name="title" 	value="Récupération de mot de passe" />
    		<put name="form" 	value="lostPasswordForm" />
    	    <put name="body" 	value="/WEB-INF/jsp/lost-password.jsp"	/>
    	</definition>
    </tiles-definitions>

    Edit : Je viens de trouver cette note dans le guide utilisateur de struts 1.2.9 au sujet de la balise <html: xhtml> qui équivaut à mon <html: html xhtml="true">

    Note: Included pages do not inherit the rendering style of the including page. Each JSP fragment or Tile must use this tag to render as XHTML.
    L'inclusion d'une balise <html: xhtml> dans chaque jsp inclue dans mon layout tiles rend le code généré par struts xhtml valide.

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

Discussions similaires

  1. [W3C] Problème validation w3c avec html/javascript
    Par mademoisellem dans le forum Balisage (X)HTML et validation W3C
    Réponses: 22
    Dernier message: 31/01/2008, 16h19
  2. [XHTML/HTML] XHTML et HTML Validator
    Par Bayard dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 28/10/2007, 20h28
  3. [XHTML] Du code Javascript qui ne passe pas en validation XHTML !
    Par LestoK dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 25/07/2007, 11h22
  4. [W3C] Pb validation XHTML et javascript
    Par jerome38000 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 15/12/2005, 14h16

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