Aide - Recherche - Membres - Calendrier
Version complète : Boolean or boolean, bizarre isn't it ?
Forum Développeur - Administration serveur, programmation et base de données > Programmation > Java
wox-xion
voilà, dans mes jsp, avant de passer à tomcat 5.5.9 (j'étais sur tomcat 5.0.x)... et bien j'utilisais ceci pour détecter le navigateur client, et renvoyer x mime-type selon msie ou pas :
CODE
<%

 // on va tester si le navigateur est ie ou non

 Boolean ieNav = false;

 Boolean netscapeNav = false;

 // en-têtes http 1.1

 String navigator = request.getHeader("user-agent");

 switch(navigator.indexOf("MSIE")){

     case -1:

         // le naviguateur n'est pas msie

         ieNav = false;

         if(request.getHeader("accept") != null){

           if(request.getHeader("accept").indexOf("application/xhtml+xml") != -1)

               response.setContentType("application/xhtml+xml");

           else

               response.setContentType("text/html");

         }else{

             response.setContentType("application/xhtml+xml");

         }

         

     break;

     default:

         System.out.println("<!-- msie -->");

         ieNav = true;

         response.setContentType("text/html");

 }

 if(navigator.indexOf("Netscape") != -1){

       netscapeNav = true;

 }else{

    netscapeNav = false;

}

 

 // on passe les variables dans le contexte de la page

 pageContext.setAttribute("netscapeNav", new Boolean(netscapeNav));

 pageContext.setAttribute("ieNav", new Boolean(ieNav));

 %>


Pour moi, ça paraît normal que ça marche... cependant, avec Tomcat 5.5.9, j'ai ces grosses erreurs :
QUOTE
HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: 6 in the jsp file: /index.jsp
Generated servlet error:
Type mismatch: cannot convert from boolean to Boolean

An error occurred at line: 6 in the jsp file: /index.jsp
Generated servlet error:
Type mismatch: cannot convert from boolean to Boolean

An error occurred at line: 6 in the jsp file: /index.jsp
Generated servlet error:
Type mismatch: cannot convert from boolean to Boolean

An error occurred at line: 6 in the jsp file: /index.jsp
Generated servlet error:
Type mismatch: cannot convert from boolean to Boolean

An error occurred at line: 6 in the jsp file: /index.jsp
Generated servlet error:
Type mismatch: cannot convert from boolean to Boolean

An error occurred at line: 6 in the jsp file: /index.jsp
Generated servlet error:
Type mismatch: cannot convert from boolean to Boolean

An error occurred at line: 6 in the jsp file: /index.jsp
Generated servlet error:
The constructor Boolean(Boolean) is undefined

An error occurred at line: 6 in the jsp file: /index.jsp
Generated servlet error:
The constructor Boolean(Boolean) is undefined


org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.ja
va:84)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:328)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:397)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:288)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:267)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:255)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:556)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:293)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.9 logs.
Apache Tomcat/5.5.9


ps : j'importe les librairies comme c et fmt juste avant le code, donc les déclarations / instanciations du début du script sont sûrement à cette ligne 6, qui en réalité (dans le fichier) se trouve être le tag d'ouverture du script... sad.gif

ps 2 : si quelqu'un a une bonne idée pour que je n'ai pas besoin d'utiliser ses maudits scriplets, pour renvoyer un mime-type selon le navigateur, je serai heureux.. wink.gif (en pensant que je vais pas faire une servlet pour, vu que la page n'est que côté affichage, donc ça ne vaut pas la peine pour moi wink.gif)
liguorien
salut,

l'explication de l'erreur de compilation est assez simple, boolean est un type primitif tandis que Boolean est un objet "wrapper" du type primitif (cf. int/Integer, double/Double, byte/Byte, etc...). Il y a plusieurs façon de régler le problème :

- Boolean ieNav = new Boolean(false); // (déconseillé)
- Boolean ieNav = Boolean.valueOf(false);
- Boolean ieNav = new Boolean("false");
- Boolean ieNav = Boolean.FALSE;


QUOTE
si quelqu'un a une bonne idée pour que je n'ai pas besoin d'utiliser ses maudits scriplets, pour renvoyer un mime-type selon le navigateur, je serai heureux.. wink.gif
tu peux créer un tag custom. wink.gif

@++
wox-xion
oki, mais est-ce normal que tant que j'utilisais tomcat 5.0.x, je n'avais jamais une telle erreur ? :roll:

le tag custom, oki, ça me paraissait aussi être une bonne idée wink.gif
mais vu que je n'utilise cela que pour des valeurs de vérification dans des conditions <c:if> ou <c:choose>, est-ce possible de définir une fonction accessible via el ? si oui, comment ?
sinon, vaut-il mieux que j'étende mon tag de <c:if> ou <c:choose> ou que j'en crée un perso ? smile.gif
wox-xion
bon, bas j'utilise ce que tu as proposé, voici l'erreur générée :
QUOTE
exception

org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: 6 in the jsp file: /index.jsp
Generated servlet error:
The constructor Boolean(Boolean) is undefined

An error occurred at line: 6 in the jsp file: /index.jsp
Generated servlet error:
The constructor Boolean(Boolean) is undefined


org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.ja
va:84)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:328)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:397)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:288)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:267)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:255)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:556)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:293)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


et cela, même en important les classes via
CODE
<%@page isErrorPage="false" errorPage="./error.jsp" pageEncoding="UTF-8" import="java.io.*,java.lang.Boolean" %>


Docteur, suis-je maudit ? :?
wox-xion
docteur, je suis fou ^^

lol, j'étais bien idiot d'utiliser Boolean en fait...
j'utilise boolean, ça va très bien, il me suffit juste de passer la variable en la transformant en Boolean... (je préfère mettre des true, false que des Boolean.TRUE ou Boolean.FALSE tongue.gif )

par contre, pour l'histoire de l'el, je serai heureux de savoir comment on crée des fonctions que l'on peut ensuite intégrer à l'el, vu que c'est ce dont j'ai besoin ^^ (si c'est possible)
wox-xion
bon, bas j'ai trouvé pour ma fonction dont j'avais besoin, soit contains() :

CODE
<%@taglib uri='http://java.sun.com/jstl/functions' prefix="fn" %>



<c:if test="${fn:contains(header['user-agent'], 'MSIE') || fn:contains(header['user-agent'], 'Lynx') || fn:contains(header['user-agent'], 'Links')}">NON-ACCEPTE</c:if>


--> http://java.sun.com/products/jsp/jstl/1.1/...docs/index.html wink.gif

je suppose que si je prenais ces petites sources et m'étendais de ces tags, bas je trouverais bien de quoi faire des fonctions pour l'EL, non ? biggrin.gif
je m'y penche dès que j'ai le temps wink.gif

par contre, j'ai pensé à une autre méthode, mais je ne connais pas comment ça marche : les filtres ...
j'ai vu des fichiers de filtres installés à la base de la config des exemples de tomcat... mais si on pouvait mieux m'expliquer comment ces filtres marchent (car si je n'ai plus à mettre de code, que le filtre délivre le content-type selon le navigateur, je suis au anges... biggrin.gif à part si ça se fait correctement via htaccess ou autre ?)
wox-xion
oh ohmy.gif thank you very much ! biggrin.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.