2010-08-25 14 views

Respuesta

94

Los scripts son Java sin formato incrustados en el código de la página, y si declara variables en sus scripts, entonces se convierten en variables locales incrustadas en la página.

En contraste, JSTL funciona completamente con atributos de ámbito, ya sea en page, request o session alcance. Es necesario reelaborar su scriplet pescar test a cabo 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 nos fijamos en la documentación para <c:set>, verá usted puede especificar scope como page, request o session, y el valor predeterminado es page .

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

+4

JSTL me hace llorar, o al menos encogerse cuando tengo que leer mucho de las cosas fugly. ¡Gracias, sin embargo! – Roboprog

13

@skaffman lo clavó. Viven cada uno en su propio contexto. Sin embargo, no consideraría usar scriptlets como la solución. Desea avoid ellos. Si lo que quieres es para concatenar cadenas en EL y se descubrió que el operador + falla por cadenas en EL (lo cual es correcto), entonces simplemente hacer:

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

O si abc consiste en obtener a partir de otra variable con ámbito llamado ${resp}, entonces:

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