在Java中将Java Char与Integer进行比较

时间:2016-02-11 06:57:53

标签: jsp char integer jstl el

我有简单的要求,我想在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 }

我试过

  1. "eq" for comaprison
  2. varStatus变量 例如loop.index
  3. loop.current
  4. ${javaObject.rating }是我从Java Class(Spring Controller)获得的

2 个答案:

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

另见: