如何使用JSTL <c:set> </c:set>存储字符

时间:2012-08-21 10:57:05

标签: java jstl

我想使用JSTL

在变量中存储字符值

我的代码是:

<c:set var="letter" value='${param.colorLetter.toLowerCase().charAt(0)}' ></c:set>

接下来我需要尝试检查角色是否为'v':

        <c:choose>
            <c:when test="${letter}=='v'">
                <lable>Color Name: </lable>Violet<br/>
            </c:when>
        </c:choose>

目前我觉得它没有将它存储为字符变量,因此测试失败了。 (没有错误/例外)

2 个答案:

答案 0 :(得分:5)

<c:set var="letter" value="${param.colorLetter.toLowerCase().charAt(0).toString()}" />

<c:choose>
    <c:when test="${letter eq 'v'}">
        <lable>Color Name: </lable>Violet<br/>
    </c:when>
</c:choose>

您必须在${}之后将整个测试放在toString()之后添加charAt(0),以便从Character投射到String

答案 1 :(得分:2)

如果这对其他人有用,我可以通过使用“sp00m”建议来解决这个问题。

<c:set var="letter" value='${param.colorLetter.toLowerCase().charAt(0).toString()}' ></c:set>

表达式语言将其存储为一个字符,然后评估它必须涉及比较ascii值。上面的方法将Character转换为String,然后将其存储在“letter”变量中。那么这只是一个简单的字符串比较问题:

<c:when test='${letter=="v"}'>