java jsp jstl scope scriptlet

java - Puedo pasar una variable de un scriptlet JSP a JSTL pero no de JSTL a un scriptlet JSP sin un error



scope (2)

@skaffman lo clavó. Viven cada uno en su propio contexto. Sin embargo, no consideraría usar scriptlets como la solución. Te gustaría avoid . Si todo lo que quiere es concatenar cadenas en EL y descubrió que el operador + falla para cadenas en EL (que es correcto), simplemente haga lo siguiente:

<c:out value="abc${test}" />

O si se obtiene abc de otra variable de ámbito denominada ${resp} , entonces hazlo:

<c:out value="${resp}${test}" />

El siguiente código causa un error:

1. <c:set var="test" value="test1"/> 2. <% 3. String resp = "abc"; 4. resp = resp + test; 5. pageContext.setAttribute("resp", resp); 6. %> 7. <c:out value="${resp}"/>

El error dice

"error a line 4: unknown symbol ''test''".

¿Cómo paso la test del código JSTL al scriptlet JSP?


Los scripts son java en bruto incrustados en el código de la página, y si declaras variables en tus scripts, se convierten en variables locales incrustadas en la página.

Por el contrario, JSTL funciona completamente con atributos de ámbito, ya sea en la page , request o alcance de la session . Debes volver a trabajar tu scriptlet para test peces como un atributo:

<c:set var="test" value="test1"/> <% String resp = "abc"; String test = pageContext.getAttribute("test"); resp = resp + test; pageContext.setAttribute("resp", resp); %> <c:out value="${resp}"/>

Si mira los documentos de <c:set> , verá que puede especificar el scope como page , request o session , y por defecto está en la page .

Mejor aún, no use ningún scriptlets: hacen llorar al bebé Jesús.