Преобразование целочисленного значения в строку с использованием JSTL/EL

Как исправить это утверждение:

${model.myHashtable[model.data.id]}.

myHashtable определяется как

Hashtable<String, String>

Но ${model.data.id} возвращает int.

Я пытался сделать что-то вроде

${model.myHashtable['model.data.id']}

Но это не работает. Любые другие идеи, кроме изменения типа id на String?


person geffchang    schedule 26.08.2010    source источник


Ответы (5)


Установите его как тело <c:set>. Он будет неявно преобразован в String.

<c:set var="idAsString">${model.data.id}</c:set>
<c:out value="${model.myHashtable[idAsString]}" />
person BalusC    schedule 26.08.2010
comment
Спасибо, попробую это завтра. :) - person geffchang; 26.08.2010
comment
Я думаю, что это третий раз в этом месяце, один из ваших ответов помог мне. Спасибо! - person IcedDante; 23.10.2014
comment
Это лучший способ сравнить строку с числом в EL, не беспокоясь о том, что возникнет исключение? - person theyuv; 02.01.2018

${''.concat(model.data.id)} работает для меня, вы можете попробовать.

person Chaojun Zhong    schedule 09.11.2017
comment
Вы спасли мой день. - person Marco Sulla; 08.07.2021

вы можете использовать org.apache.commons.collections4.map.CaseInsensitiveMap, и String "1", и int 1 являются одним и тем же ключом;

person 大丈夫没问题    schedule 04.02.2015

В JSP-файле:

<%@ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt" %>

<!-- lines of code... -->

<fmt:parseNumber var = "id_value" type = "number" value = "${model.data.id}" />
<c:out value = "${id_value}" />
person Do Nhu Vy    schedule 17.01.2018

${model.data.id} возвращает целое число, используйте Hashtable ‹Integer, String›, что решает мою проблему. Если идентификатор является числом, то ‹c:set› бесполезен.

person JamesR    schedule 25.03.2021