2010-08-26 10 views
16

Comment puis-je corriger cette déclaration:valeur entière Convertir en chaîne en utilisant JSTL/EL

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

myHashtable est défini comme

Hashtable<String, String> 

Mais, ${model.data.id} retourne un int.

J'ai essayé de faire quelque chose comme

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

Mais il ne fonctionne pas. D'autres idées, en dehors de changer le type de id à String?

Répondre

33

Définissez-le comme corps de <c:set>. Il sera implicitement converti en String.

<c:set var="idAsString">${model.data.id}</c:set> 
<c:out value="${model.myHashtable[idAsString]}" /> 
+0

Merci, va essayer demain. :) – geffchang

+0

Je pense que c'est la 3ème fois que ce mois-ci l'une de vos réponses m'a aidé. Merci! – IcedDante

+0

Est-ce la meilleure façon de comparer une chaîne à un nombre dans EL sans avoir à se soucier d'une exception levée? – theyuv

0

vous pouvez utiliser à la fois org.apache.commons.collections4.map.CaseInsensitiveMap String "1" et int 1 sont la même clé;

0

$ {''. Concat (model.data.id)} fonctionne pour moi, vous pouvez l'essayer.

0

Dans le fichier 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}" /> 
Questions connexes