Question

Dans un fichier jsp J'ai cette déclaration:

<jsp:useBean scope="request" id="products" class="java.util.ArrayList<sgt.supermarket.entity.Product>"/>

Cette déclaration fonctionne très bien avec GlassFish 2.1, cependant, quand je passe à Tomcat 6.0, les exceptions sont jetés:

La valeur de la classe useBean attribut java.util.ArrayList est invalide.

Y at-il manqué pour Tomcat bibliothèque qui le rend différent de se comporter en verre Poissons 2.1?

Était-ce utile?

La solution

EL ne connaît pas les types paramétrés, donc il n'y a pas besoin de le faire. Dans JSP / EL, il n'y a absolument aucun contrôle de compilation à ce sujet. EL est plus basé sur la réflexion. Cependant, je suis un peu surpris qu'il « fonctionne » dans Glassfish comme il est pas spécifié dans JSP / EL specifciation.

En dehors de tout cela, le jsp:useBean est assez superflu dans une application MVC décente dans laquelle un Servlet est été utilisé pour contrôler et prétraiter les demandes.

List<Product> procucts = productDAO.list();
request.setAttribute("products", products);
request.getRequestDispatcher("products.jsp").forward(request, response);

Le products est maintenant accessible juste à EL par ${products}. Pas besoin d'un jsp:useBean.

Autres conseils

Si vous faites affaire avec le code existant et que vous voulez tout simplement de se débarrasser de tous ces avertissements JSP de type brut alors vous voudrez peut-être remplacer votre ligne avec celui-ci:

<% request.setAttribute("products", 
       new java.util.ArrayList<sgt.supermarket.entity.Product>()); %>

Mais BalusC est toujours droite: Lorsque vous utilisez le modèle MVC classique, alors il est préférable de créer cette liste de produits dans le contrôleur et non dans la vue. Et si vous utilisez un modèle de vue d'abord, puis-je vous suggère d'écrire votre propre JSP Tag qui crée et remplit cette liste de produits dans le code Java propre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top