Domanda

So che puoi usare il tag <jsp:useBean> per creare un'istanza di oggetti all'interno di JSP senza ricorrere al codice scriptlet. Tuttavia, vorrei creare un'istanza di un numero intero il cui valore è il risultato di un'espressione EL, qualcosa del tipo:

<jsp:useBean id="total" class="java.lang.Integer">
    <jsp:setProperty name="amount" value="${param1 + param2}"/>
</jsp:useBean>

Ovviamente questo non funzionerà perché gli oggetti Integer non hanno una proprietà chiamata 'amount', l'unico modo in cui il loro valore può essere impostato è tramite un parametro costruttore (cioè gli oggetti Integer sono immutabili). Esiste un modo per creare un'istanza di tale oggetto e impostarne il valore senza utilizzare il codice scriptlet?

Grazie, Don

È stato utile?

Soluzione

<c:set var="amount" value="${param1 + param2}" scope="page" />

Altri suggerimenti

Anche i wrapper primitivi non hanno un costruttore predefinito quindi non puoi nemmeno inizializzarne uno in questo modo.

Non sono sicuro che EL dovrebbe essere usato in quel modo. È più di un linguaggio modello. Non è chiaro quale vantaggio ciò che stai cercando di fare abbia qualcosa di simile:

<%
  Integer total = new Integer(param1 + param2);
%>

E poi basta usare <% = total% > dove è necessario l'output del valore. Puoi anche fare:

<%
  pageContext.setAttribute("total", new Integer(param1 + param2));
%>

se vuoi che il valore sia nell'ambito della pagina come farà useBean.

Se hai un bean, puoi semplicemente aggiornare il bean con param1 e 2? Creare un metodo, setAmount (param1, param2) e impostarlo prima di utilizzare getAmount (), che è ciò che il bean chiamerà.

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