Domanda

In un file jsp ho questa dichiarazione:

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

Questa dichiarazione funziona bene con GlassFish 2.1, tuttavia, quando passo per Tomcat 6.0, eccezioni è gettato:

Il valore per la classe useBean attributo java.util.ArrayList non è valido.

C'è qualche libreria di perdere per Tomcat che lo rende diverso da comportarsi Pesce vetro 2,1?

È stato utile?

Soluzione

EL non è a conoscenza dei tipi parametrizzati, quindi non c'è bisogno di farlo. In JSP / EL non ci sono assolutamente i controlli in fase di compilazione su questo. EL è più basato sulla riflessione. Sono però un po 'sorpreso che "funziona" in Glassfish in quanto non è specificato in JSP / EL specifciation.

Oltre tutto, la jsp:useBean è abbastanza superflua in un'applicazione MVC discreto in cui una Servlet è stato utilizzato per controllare e pre-elaborare le richieste.

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

Il products ora è solo accessibile in EL per ${products}. Non c'è bisogno di un jsp:useBean.

Altri suggerimenti

Se avete a che fare con il codice legacy e semplicemente vuole sbarazzarsi di tutte quelle prime tipo JSP avvertimenti quindi si consiglia di sostituire la linea con questo:

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

Ma BalusC è ancora quello giusto: quando si utilizza il classico pattern MVC, allora è meglio per creare questa lista dei prodotti nel controller e non nella vista. E se si utilizza un modello vista-prima allora vi consiglio di scrivere il proprio Tag JSP che crea e riempie questo elenco dei prodotti in un ambiente pulito del codice Java.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top