2010-09-20 10 views
1

Nous avons récemment basculé vers Servlet 2.4 et JSP 2 sur un projet et nos balises personnalisées ne fonctionnent plus. Nous avons des balises comme:JSP 2 et Servlet 2.4 ont cassé mes balises personnalisées

<myTags:someTag value="${x}" /> 

et une fois dans l'étiquette, nous avons évalué le haricot x et est allé de là. Maintenant, l'évaluation se passe directement dans la JSP et nous obtenons un String (apparemment x.toString()) défini pour l'attribut value.

Il n'y a pas beaucoup de tags et je pourrais les adapter dans quelques jours mais comment puis-je faire ça? Je n'ai rien trouvé sur le web (ou peut-être que je ne regarde pas où je devrais).

Comment puis-je passer le bean x à ma balise et l'évaluer et ne pas permettre son évaluation dans la JSP?

P.S. Je ne veux pas désactiver le moteur EL

Merci!

Répondre

2

Si vous redéclarer web.xml comme Servlet 2.4 comme suit

<web-app 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 
    version="2.4"> 

et le fichier tld comme JSP 2.0 taglib comme suit:

<taglib 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" 
    version="2.0"> 

Vous pouvez ensuite ajouter <rtexprvalue>true</rtexprvalue> entrées attributs de la balise dans le TLD fichier qui attendent des valeurs EL. Par exemple.

<attribute> 
    <name>value</name> 
    <rtexprvalue>true</rtexprvalue> 
</attribute> 

Il est défini par défaut sur false.

+0

Merci pour votre réponse. Je les ai déjà mis en place comme vous le dites et la chose est évaluée à String avant d'atteindre mon tag. – user0912

+0

Avez-vous également mis à jour le fichier 'tld'? J'ai mis à jour ma réponse. – BalusC

+0

Oui. J'ai Servlet 2.4 dans web.xml, web-jsptaglibrary_2_0.xsd pour le fichier TLD. Je reçois une chaîne dans la valeur même si le x bean est autre chose. Qu'est-ce que cela peut être? Comme vous l'avez probablement deviné de mon autre question, je ne suis pas très bon dans ce domaine mais, fondamentalement, cela devrait fonctionner. Quoi d'autre pourrais-je faire de mal? – user0912