Как конвертировать int в char на языке выражений JSP? - PullRequest
5 голосов
/ 07 января 2011

Мне нужно отображать увеличенные одиночные символы для обозначения сносок в таблице данных в JSP. В Java я обычно имел бы переменную char и просто увеличивал ее, или преобразовывал int в char, приводя его (например, (char) (i + 97) для преобразования индекса на основе 0 в a-z). Я не могу понять, как сделать это на языке выражений, если не написать собственную функцию JSTL.

Кто-нибудь знает, как преобразовать int в char в EL? Или как увеличить переменную char в EL? Или, может быть, даже лучший способ сделать то, что я пытаюсь сделать в JSP / EL?

Пример того, что мне нужно уметь производить:
a mydata
b myotherdata
...
a первая сноска
b вторая сноска

Ответы [ 2 ]

6 голосов
/ 07 января 2011

Это невозможно. Лучше всего отображать его в виде объекта XML.

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

Это закончится как

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

&#x61; представляет a и так далее.

a item1
b item2
c item3
...

У вас проблема только в том случае, если в списке более 26 элементов.

1 голос
/ 26 августа 2014

Вы можете использовать c: set и теги сущностей xml для приведения целого числа к символу.Вам придется использовать обратную косую черту, чтобы избежать # или, переменная id будет установлена ​​буквально &#{(i.index+97)} вместо оценки ${...} code

В следующем примере будет циклически проходить списокmsgstr "переменные и выведите div для каждого с идентификатором и содержимым, начинающимися с" a ".

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

При этом будет выведено следующее, при условии, что в коллекции «список» есть 5 элементов.

<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>

Как отмечено в другом ответе, это будет работать, только если ваш списокразмер до 27.

...