creazione di oggetti immutabili in JSP
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
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à.