2010-03-30 32 views
31
<c:forEach items="${myParams.items}" var="currentItem" varStatus="stat"> 
    <c:set var="myVar" value="<c:out var="myVar" />" /> 
</c:forEach> 

quiero concatenar los valores de currentItem.myVar y de salida al final del bucle, el problema es que no puedo encontrar la manera de hacer esto ...¿Cómo puedo concatenar una cadena dentro de un ciclo en JSTL/JSP?

(preferiblemente no usar Java)

Respuesta

47

Quizás esto funcione?

<c:forEach items="${myParams.items}" var="currentItem" varStatus="stat"> 
    <c:set var="myVar" value="${stat.first ? '' : myVar} ${currentItem}" /> 
</c:forEach> 
+0

esto está bien, excepto que el primer valor es nulo – qodeninja

+0

OK, agregué un cheque para ver si es la primera vez en el ciclo. ¿Eso funciona? – harto

+0

yup perfecto =] ty – qodeninja

-5

definir una variable de cadena con las etiquetas JSP

<%! 
String test = new String(); 
%> 

a continuación se refieren a esa variable en el bucle como

<c:forEach items="${myParams.items}" var="currentItem" varStatus="stat"> 
test+= whaterver_value 
</c:forEach> 
+2

El uso de Java no es el camino a seguir con esto, creo que necesito usar JSTL – qodeninja

+0

casi -1 para el nuevo String(). Qué tal si ""? – Thilo

+0

Thilo, sí, lo entiendo para el nuevo String(). ¡Mi error! –

13

Estás usando JSTL 2.0 ¿verdad? No necesita poner <c:out/> alrededor de todas las variables. ¿Has intentado algo como ésto?

<c:forEach items="${myParams.items}" var="currentItem" varStatus="stat"> 
    <c:set var="myVar" value="${myVar}${currentItem}" /> 
</c:forEach> 

Editar: Golpeado por lo anterior

+0

esto está bien, excepto que el primer valor es nulo =/ – qodeninja

+0

primer valor nulo: Solo haga otra c: configure fuera del ciclo para inicializar myVar. – Thilo

+0

Entonces, quizás envuelva la etiqueta establecida en un if? ...? –

0

Es JSTL de join(), lo que ha buscado?

<c:set var="myVar" value="${fn:join(myParams.items, ' ')}" /> 
Cuestiones relacionadas