我有简单的要求,我想在EL语法中将Java Char与Integer进行比较,我该怎么做?
<select name="rating" id="id-rating">
<c:forEach var="i" begin="1" end="5" >
<c:choose>
<c:when test="${javaObject.rating == i }">
<option value="${i }" selected="selected">${i }</option>
</c:when>
<c:otherwise>
<option value="${i }">${i }</option>
</c:otherwise>
</c:choose>
</c:forEach>
</select>${javaObject.rating }
我试过
"eq"
for comaprison loop.index
loop.current
${javaObject.rating }
是我从Java Class(Spring Controller)获得的
答案 0 :(得分:2)
这对我来说很好用
${1 eq Integer.parseInt('1')} // return true
答案 1 :(得分:1)
这确实行不通。技术问题是,char 1
的整数值为49
。 (代码点)。证据在这里:
System.out.println((int) '1'); // 49
因此,您需要添加一个整数偏移量以匹配char的代码点。
<c:forEach var="i" begin="49" end="53">
${bean.rating == i}<br/>
</c:forEach>
或者,将<c:set>
与body中的值一起使用,将值转换为String
。 EL将以正确的方式进行自动强制。
<c:forEach var="i" begin="1" end="5">
<c:set var="ratingAsString">#{bean.rating}</c:set>
${ratingAsString == i}<br/>
</c:forEach>