2011-01-07 16 views
5

Necesito mostrar caracteres individuales incrementados para denotar notas al pie en una tabla de datos en un JSP. En Java, normalmente tendría una variable char y simplemente la incrementaría, o convertiría un int en un char al convertirlo (por ejemplo, (char) (i + 97) para convertir un índice basado en 0 a a-z). No puedo descifrar cómo hacer esto en el lenguaje de expresión antes de escribir mi propia función JSTL.Cómo convertir int a char en lenguaje de expresión JSP?

¿Alguien sabe cómo convertir un int a char en EL? ¿O cómo incrementar una variable char en EL? ¿O posiblemente incluso una mejor técnica para hacer lo que estoy tratando de hacer en JSP/EL?

Ejemplo de lo que necesito para ser capaz de producir:
un mydata
b myotherdata
...
una primera nota
b segundo nota

Respuesta

6

Eso no es posible. Su mejor apuesta es mostrarlo como entidad XML.

<c:forEach items="${list}" var="item" varStatus="loop"> 
    <sup>&#${loop.index + 97};</sup> ${item}<br /> 
</c:forEach> 

Se va a acabar así como

<sup>&#97;</sup> item1<br /> 
<sup>&#98;</sup> item2<br /> 
<sup>&#99;</sup> item3<br /> 
... 

El &#x61; representa un a y así sucesivamente.

a elemento1
b elemento2
c elemento3
...

que has sólo un problema cuando la lista es más de 26 artículos.

+0

Gracias esta es una buena solución, sin embargo a es la representación hexadecimal de un 'a' y por lo que este didn No funcionó (omitió las letras 10 a 16 cuando llegó al p). La solución fue usar a etc., que es el equivalente decimal. –

+0

Oh, eso fue estúpido de mi parte. Fijo. – BalusC

1

Puede usar c: establecer y etiquetas de entidad xml para convertir el número entero en un carácter. Vas a tener que utilizar la barra invertida con el fin de escapar de la # o, la variable de identificación se establece en &#{(i.index+97)} literalmente en lugar de evaluar el código ${...}

el ejemplo siguiente se hará un bucle a través de las variables de "lista" y salida de un div para cada uno con la identificación y los contenidos que comienzan en "a".

<c:forEach items="${list}" varStatus="i"> 
    <c:set var="id" value="&\#${(i.index+97)}" /> 
    <div id="div-${id}">Div ${id}</div> 
</c:forEach> 

Esto daría como resultado lo siguiente, suponiendo que hay 5 elementos en la colección "list".

<div id="div-a">Div a</div> 
<div id="div-b">Div b</div> 
<div id="div-c">Div c</div> 
<div id="div-d">Div d</div> 
<div id="div-e">Div e</div> 

Como se señaló en la otra respuesta, esto sólo funcionará si el tamaño de la lista se encuentra bajo 27.