Frage

In einer JSP -Datei habe ich diese Erklärung:

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

Diese Deklaration funktioniert einwandfrei mit Glassfish 2.1. Wenn ich jedoch zu Tomcat 6.0 wechsle, werden Ausnahmen geworfen:

Der Wert für das Attribut "UseBean Class" Java.util.ArrayList ist ungültig.

Gibt es eine Bibliothek für Tomcat, die sich von Glass Fish 2.1 unterscheidet?

War es hilfreich?

Lösung

El ist sich der parametrisierten Typen nicht bewusst, daher ist dies nicht erforderlich. In JSP/EL gibt es absolut keine Kompilierungszeitprüfungen. El basiert mehr auf Reflexion. Ich bin jedoch ein bisschen überrascht, dass es in Glassfish "funktioniert", da es in der JSP/EL -Spezifikation nicht angegeben ist.

Abgesehen von allem die jsp:useBean ist in einer anständigen MVC -Anwendung ziemlich überflüssig, bei der a Servlet wird verwendet, um die Anfragen zu kontrollieren und vorzuproben.

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

Das products ist jetzt nur in El von zugänglich von ${products}. Keine Notwendigkeit eines jsp:useBean.

Andere Tipps

Wenn Sie sich mit Legacy-Code zu beschäftigen und einfach nur all diese JSP-Warnungen im rohen Typ loswerden möchten, möchten Sie möglicherweise Ihre Linie durch diese ersetzen:

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

Aber Balusc ist immer noch richtig: Wenn Sie das klassische MVC -Muster verwenden, ist es besser, diese Produktliste im Controller und nicht in der Ansicht zu erstellen. Und wenn Sie ein Ansichtsmuster verwenden, schlage ich vor, ein eigenes JSP-Tag zu schreiben, das diese Produktliste in sauberem Java-Code erstellt und füllt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top