2010-06-02 11 views
0

Je travaille sur une application web pré-existante construite avec JSP, qui utilise une bibliothèque Java externe. Je veux faire des JavaBeans instanciés avec des balises jsp: useBean disponibles pour le code Java.champ d'application JSP objets dans la bibliothèque Java

Quelle serait une bonne pratique de le faire? Je suppose que je peux passer les objets en question à chaque appel de fonction qui les requiert, mais je voudrais éviter cela.

Répondre

3

Demande objets scope sont stockés en tant qu'attributs de la ServletContext. Si le « appel de fonction » a accès à la ServletContext, alors il peut simplement les saisir comme suit:

Bean bean = (Bean) servletContext.getAttribute("beanname"); 

Je bien sûr attendre à ce que la « fonction » est en cours d'exécution dans le contexte de servlet. C'est à dire. il est (in) directement exécuté par une servlet de la manière habituelle.

+0

En fait, je ne pense pas que ce soit. Les classes appropriées sont importées dans le JSP (via les directives '<% page import%>') et appelées. Comment peuvent-ils fonctionner dans un contexte de servlet? – FrontierPsycho

+1

Ouch, mauvaise pratique. Quoi qu'il en soit, le contexte de servlet est disponible dans JSP * scriptlet * ainsi que dans la référence implicite 'application'. Par exemple. '<% Bean bean = (Bean) application.getAttribute (" nom du bean "); %> 'et ainsi de suite. – BalusC

+0

Donc ce que vous dites est que je dois passer le Bean à la fonction, sauf si je repense l'application. :) En bref, comment pourrais-je corriger le design? – FrontierPsycho