Pregunta

Sé que puede usar la etiqueta <jsp:useBean> para crear instancias de objetos dentro de JSP sin recurrir al código scriptlet. Sin embargo, me gustaría crear una instancia de un Entero cuyo valor es el resultado de una expresión EL, algo así como:

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

Por supuesto, esto no funcionará porque los objetos Integer no tienen una propiedad llamada 'cantidad', la única forma de establecer su valor es a través de un parámetro constructor (es decir, los objetos Integer son inmutables). ¿Hay alguna forma de crear una instancia de dicho objeto y establecer su valor sin usar el código scriptlet?

Gracias Don

¿Fue útil?

Solución

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

Otros consejos

Los contenedores primitivos tampoco tienen un constructor predeterminado, por lo que ni siquiera puedes inicializar uno de esa manera.

No estoy seguro de que se suponga que EL se use de esa manera. Es más un lenguaje de plantillas. No está claro qué ventaja tiene lo que intenta hacer sobre algo como:

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

Y luego simplemente usando <% = total% > donde necesita que se envíe el valor. También puedes hacer:

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

si desea que el valor esté en el alcance de la página, como lo hará useBean.

Si tiene un bean, ¿puede actualizar el bean con param1 y 2? Cree un método, setAmount (param1, param2), y configúrelo antes de usar getAmount (), que es lo que el bean llamará.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top