Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2731 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [STRUTS-WML] espaces inutiles...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[STRUTS-WML] espaces inutiles...

n°1343229
Kineas
Posté le 10-04-2006 à 16:24:45  profilanswer
 

Bonjour à tous,
j'ai un petit problème que je n'arrive pas à régler et je me demandais si vous pouviez m'aider ?!

 

Voilà mon prblème est le suivant : dans le cadre d'un dévellopement d'un site Wap, j'ai décidé d'utiliser Struts et les JSP. Le problème est que à cause du wap, j'ai une contrainte assez emmerdante :  je dois avoir des pages wml de maximum de 10ko. Or, lorsque Struts me génére mes apges il rajoute énormément d'espaces (dans les 5ko) et je souhaiterai donc savoir si quelqu'un sait s'il existe un moyen pour que Struts me génère les pages wml avec un minimum de caractères inutile ?  :bounce:

mood
Publicité
Posté le 10-04-2006 à 16:24:45  profilanswer
 

n°1344282
Kineas
Posté le 11-04-2006 à 16:25:22  profilanswer
 

Il n'y a aucun expert Struts sur ce forum ou mon message n'est peut être pas assez clair ? (je me demande si ca ne viendrait pas de NetBeans mais ej en suis aps sure ?!)

n°1344314
Mario_
Vive le pingouiboulga !!
Posté le 11-04-2006 à 17:14:53  profilanswer
 

Je crois qu'il y avait eu une question comme ça il y a peu et il me semble qu'il était dit qu'il fallait mettre les imports sur une seule ligne (entre autres astuces), ainsi le fichier généré ne comportait pas de lignes vides au début.


---------------
Soyons ouverts d'esprit, mais pas au point de laisser notre cerveau s'enfuir.
n°1344331
Kineas
Posté le 11-04-2006 à 17:24:46  profilanswer
 

Merci pour ta réponse Mario_ mais jca n'a rien donnée :(
Je vais essayer de trouver le sujet dont tu parles...

n°1344397
benou
Posté le 11-04-2006 à 19:01:38  profilanswer
 

le coups des imports en tête de fichier ca pose problème pour avoir un fichier xml valide (commençant par <?xml version=1.0 ...?> ), c'est visiblement pas ça le problème de notre ami ...
 
Une solution bourine mais qui marche : tu mets un filtre qui parse ce qui sors de ton site et qui le recrache en virant les espaces inutiles ... ca se fait en quelques lignes avec du parsing sax ... le codage du filtre en lui même est un peu plus délicat ...
je peux t'aiguiller là dessus si tu veux ...
 
Mais tu es sûr que ca pose vraiment problème ? généralement, les gateway wap (wap1) binarise le WML => les espaces sont supprimés

n°1345261
Kineas
Posté le 12-04-2006 à 16:52:27  profilanswer
 

Pour le filtre j'y avais déjà pensé mais les problèmes des ressources prises par le filtrage sont assez embêtantes :(
Sinon pour le fait que ca pose un probleme, ben en fait je ne sais pas encore par quel type de gateway wap je vais passer donc je voulais me proteger contre toutes les possibilités !
Je vais essayer cette solution de filtre et je vous tient au courant  :bounce:

Message cité 1 fois
Message édité par Kineas le 12-04-2006 à 16:52:58
n°1345573
benou
Posté le 12-04-2006 à 21:37:11  profilanswer
 

Kineas a écrit :

Pour le filtre j'y avais déjà pensé mais les problèmes des ressources prises par le filtrage sont assez embêtantes :(


bha le wml c'est des petites pages, et généralement du faible traffic ... et du parsing sax c'est pas ce qu'il y a de plus gourmand ...


---------------
ma vie, mon oeuvre - HomePlayer
n°1345838
Bidem
Posté le 13-04-2006 à 11:18:49  profilanswer
 

Citation :

Or, lorsque Struts me génére mes apges il rajoute énormément d'espaces (dans les 5ko) et je souhaiterai donc savoir si quelqu'un sait s'il existe un moyen pour que Struts me génère les pages wml avec un minimum de caractères inutile ?


 
Je ne suis pas sur que ce soit Strut qui "ajoute" les espaces. Ces espaces viennent peut être de la façon dont tu indentes les tags html/struts.
 
Tu peux nous monter une de tes jsp ?


Message édité par Bidem le 13-04-2006 à 11:19:07
n°1345862
Kineas
Posté le 13-04-2006 à 11:33:27  profilanswer
 

Ok mais ca prend un peu de place quand même...

Code :
  1. <%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
  2. <%@ taglib uri="/WEB-INF/struts-wml.tld" prefix="wml" %>
  3. <%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>
  4. <%@page contentType="text/vnd.wap.wml"%>
  5. <%@page pageEncoding="ISO-8859-1"%>
  6. <%@page import="com.opensugar.util.Configuration"%>
  7. <%@page import="java.util.Collection"%>
  8. <%--
  9. The taglib directive below imports the JSTL library. If you uncomment it,
  10. you must also add the JSTL library to the project. The Add Library... action
  11. on Libraries node in Projects view can be used to add the JSTL 1.1 library.
  12. --%>
  13. <%--
  14. <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
  15. --%>
  16. <%--
  17. Contrôle de login
  18. --%>
  19. <%@include file="/partieCommune/wap/include/validerSession.jsp"%>
  20. <card id="cMess" title="<bean:message key="cMess.titre"/>"> 
  21.     <%--
  22.     Contrôle de message spécifique
  23.     --%>
  24.     <jsp:include page="/partieCommune/wap/include/messageEnTete.jsp" />
  25.     <%--
  26.     Contrôle de nouveaux messages
  27.     --%>
  28.     <jsp:include page="/partieCommune/wap/include/nouveauxMessagesRecus.jsp" />
  29.     <%--
  30.     Contrôle de nouveaux evenements
  31.     --%>
  32.     <jsp:include page="/partieCommune/wap/include/nouveauxEvenementsRecus.jsp" />
  33.     <p align="left"><small>
  34.         <%--
  35.         Contrôle de message spécifique
  36.         --%>
  37.         <jsp:include page="/partieCommune/wap/include/messageEnTete.jsp" />
  38.            
  39.         <b><bean:message key="cMess.dossier"/></b>
  40.         <logic:present name="dossierCourant">
  41.             <bean:write name="dossierCourant" />
  42.         </logic:present>
  43.         :<br/>
  44.         <logic:empty name="lesMessages">
  45.             <bean:message key="cMess.aucun"/> !<br/>
  46.         </logic:empty>
  47.         <logic:present name="lesMessages">
  48.             <logic:iterate id="Messages" name="lesMessages">
  49.                 <logic:equal name="Messages" property="lu" value="false">
  50.                     <b>
  51.                 </logic:equal>
  52.                     - <bean:write name="Messages" property="date" format="dd/MM/yyyy HH:mm"/> -
  53.                     <anchor>
  54.                         <logic:equal name="Messages" property="type" value="message">                       
  55.                             <bean:write name="Messages" property="titre"/>
  56.                         </logic:equal>
  57.                         <logic:equal name="Messages" property="type" value="alerte">
  58.                             <bean:define id="titreAlerte" name="Messages" property="titre"/>
  59.                             <bean:message key="${titreAlerte}"/>
  60.                             <bean:define id="exp" name="Messages" property="expediteur"/>
  61.                             <bean:write name="exp" property="login"/>
  62.                         </logic:equal>
  63.                         <logic:equal name="Messages" property="type" value="blame">
  64.                             <bean:define id="titreBlame" name="Messages" property="titre"/>
  65.                             <bean:message key="${titreBlame}"/>
  66.                         </logic:equal>
  67.                         <logic:equal name="Messages" property="type" value="invitation">
  68.                             <bean:define id="titreInvitation" name="Messages" property="titre"/>
  69.                             <bean:message key="${titreInvitation}"/>
  70.                         </logic:equal>
  71.                         <logic:equal name="Messages" property="type" value="alerteSimple">
  72.                             <bean:define id="titreAlerteSimple" name="Messages" property="titre"/>
  73.                             <bean:message key="${titreAlerteSimple}"/>
  74.                         </logic:equal>
  75.                         <wml:go action="lireMessage" method="post">
  76.                             <postfield name="id" value="<bean:write name="Messages" property="idMessage"/>" />
  77.                         </wml:go>
  78.                     </anchor><br/>
  79.                     <logic:equal name="Messages" property="lu" value="false">
  80.                 </b>
  81.                 </logic:equal>
  82.             </logic:iterate>
  83.             <%--
  84.             Cas de plusieurs pages
  85.             --%>
  86.             <%
  87.                 if ( ((Integer) request.getSession().getAttribute("debPageA" )).intValue() > 1) {
  88.                     int debPageAMM = ((Integer) request.getSession().getAttribute("debPageA" )).intValue() - 1;
  89.             %>
  90.             <anchor>&lt;<bean:message key="general.pageP"/><%out.print( debPageAMM );%>
  91.                 <wml:go action="afficherMessagerie" method="post">
  92.                     <postfield name="debPageMessgerie" value="<%out.print( debPageAMM );%>"/>
  93.                 </wml:go>
  94.             </anchor>
  95.             <%
  96.                 }
  97.                 if ( ((Collection) request.getSession().getAttribute("lesMessages" )).size() == Configuration.NB_MAX_RESULTATS_AFFICHES ) {
  98.                     int debPageAPP = ((Integer) request.getSession().getAttribute("debPageA" )).intValue() + 1;
  99.             %>
  100.             <anchor><bean:message key="general.pageS"/><%out.print( debPageAPP );%>&gt;
  101.                 <wml:go action="afficherMessagerie" method="post">
  102.                     <postfield name="debPageMessgerie" value="<%out.print( debPageAPP );%>"/>
  103.                 </wml:go>
  104.             </anchor><br/>
  105.             <%
  106.                     }
  107.             %>
  108.         </logic:present>
  109.         <br/>
  110.        
  111.         <%--
  112.         Lien pour effacer tous les messages
  113.         --%>
  114.         <logic:notEmpty name="lesMessages">       
  115.             <anchor>
  116.                 <bean:message key="cMess.effacerTous"/>
  117.                 <wml:go action="retirerTous" method="post"/><br/>
  118.             </anchor>
  119.             <br/>
  120.         </logic:notEmpty>
  121.        
  122.         <%--
  123.         Liens pour changer de dossier et gérer les dossiers
  124.         --%>
  125.         <b><bean:message key="cMess.autresDoss"/> </b>(
  126.         <anchor>
  127.             <bean:message key="general.gerer"/>
  128.             <wml:go action="dossier" method="post"/>
  129.         </anchor>
  130.         ) : <br/>
  131.         <logic:present name="lesDossiers">
  132.             <logic:iterate id="Dossiers" name="lesDossiers">
  133.                 <anchor>
  134.                     - <bean:write name="Dossiers" property="nom"/> (<bean:write name="Dossiers" property="nbMessages"/> )
  135.                     <wml:go action="afficherMessagerie" method="post">
  136.                         <postfield name="nom" value="<bean:write name="Dossiers" property="nom"/>" /><br/>
  137.                     </wml:go>
  138.                 </anchor>
  139.             </logic:iterate>
  140.         </logic:present>
  141.         <br/>
  142.        
  143.         <%--
  144.         Lien pour envoyer un message
  145.         --%>
  146.         <anchor>
  147.             <bean:message key="cMess.envoyerMess"/>
  148.             <wml:go action="ecrireMessage" method="post">
  149.                 <postfield name="choix" value="0"/>
  150.                 <postfield name="defautDest" value=""/>
  151.             </wml:go>
  152.         </anchor><br/>
  153.         <%--
  154.         Liens de retour
  155.         --%>
  156.         <anchor><bean:message key="general.retEcrantitre"/><wml:go action="jeu" method="post"/></anchor><br/>
  157.         <anchor><bean:message key="general.retAccueil1"/><wml:go action="index" method="post"/></anchor><br/>               
  158.     </small></p>     
  159. </card>


 
Voila désolé pour la place prise mais je voyais pas comment faire autrement (je connaissait un site avant qui permettait de mettre du code lisible par tout le monde mais j'ai perdu l'adresse... :bounce:

n°1346036
Bidem
Posté le 13-04-2006 à 14:21:19  profilanswer
 

La plus part des espaces inutiles sont pour l'indentation.
 
Astuce pour réduire ça :
 - indenter avec 2 espaces au lieu de 4
 - indenter avec tabulation
 
De plus les blocs de code les plus indentés sont dans des <logic:iterate>
donc s'il y a beaucoup d'éléments dans tes listes (lesMessages et lesDossiers) ça va multiplier ke nombre d'espaces.
 
Optimisation des <logic:iterate> :
 
- On supprime toute l'indentation (c'est bourrin et le code est moins lisible mais on gagne beaucoup en taille)

Code :
  1. <logic:iterate id="Dossiers" name="lesDossiers">
  2. <anchor>
  3. - <bean:write name="Dossiers" property="nom"/> (<bean:write name="Dossiers" property="nbMessages"/> )
  4. <wml:go action="afficherMessagerie" method="post">
  5. <postfield name="nom" value="<bean:write name="Dossiers" property="nom"/>" /><br/>
  6. </wml:go>
  7. </anchor>
  8. </logic:iterate>


On peut être encore plus bourrin en supprimant aussi tous les retours à la ligne.
 
 - On diminue le niveau d'indentation à l'intérieur des <logic:iterate>
    C'est un bon compromi entre lisibilité et gain de place

Code :
  1. <logic:iterate id="Dossiers" name="lesDossiers">
  2.   <anchor>
  3.     - <bean:write name="Dossiers" property="nom"/> (<bean:write name="Dossiers" property="nbMessages"/> )
  4.     <wml:go action="afficherMessagerie" method="post">
  5.       <postfield name="nom" value="<bean:write name="Dossiers" property="nom"/>" /><br/>
  6.     </wml:go>
  7.   </anchor>
  8. </logic:iterate>


Message édité par Bidem le 13-04-2006 à 14:23:43
mood
Publicité
Posté le 13-04-2006 à 14:21:19  profilanswer
 

n°1346070
Kineas
Posté le 13-04-2006 à 14:36:06  profilanswer
 

Ben en fait j'ai déjà essayer d'enlever toute l'indentation (raccourci ctrl+a et shift+tab très pratique :) ) mais cela n'a rien chnagé lorsque j'ai affiché la source de la page (je test mes pages wap avec Opéra) !
Ce qui me fait penser : serait-il possible que Opéra m'affiche le code source "indenter à sa facon" ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [STRUTS-WML] espaces inutiles...

 

Sujets relatifs
cherche doc pour struts en FRDeveloppement avec la technologie STRUTS
[Java/Struts] Tag personnalisé[Struts] Pb struts sans connexion internet
[WML] wtai en visiophonie ???[JSP/Struts/templates] éclairez moi
[batch] Supprimer les espaces dans les noms de dossierpb struts+javascript+xhtml
Struts et JSP...J2EE/Struts - récupérer une liste typée dans une selectBox d'un form
Plus de sujets relatifs à : [STRUTS-WML] espaces inutiles...


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)