jstl - 选择/何时

时间:2012-01-25 15:06:21

标签: jsp jstl

我有简短的代码:

<c:choose>
<c:when test="${logging==1}">
    write 1
</c:when>
<c:otherwise>
    write 2
</c:otherwise>

</c:choose>

问题是此代码不起作用。如果日志记录为1或0无关紧要,则代码会显示“写入2”文本。

有什么问题?记录是 int

在您的回答之后,我已将代码更改为:

<c:choose>
<c:when test="${logging eq 'added'}">
    write 1
</c:when>
<c:otherwise>
    write 2
</c:otherwise>

</c:choose>

现在,我的' 日志记录' 是一个字符串。它显示'已添加'和$ {logging ['class']}显示'类java.lang.String ',但仍然会写'write 2'

我也有&lt;%@ taglib uri =“http://java.sun.com/jsp/jstl/core”prefix =“c”%&gt;声明

我的 web.xml 是:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

2 个答案:

答案 0 :(得分:2)

如果值根本不是int,则会发生这种情况,例如String。对于字符串,您需要引用比较值:

<c:choose>
    <c:when test="${logging == '1'}">
        write 1
    </c:when>
    <c:otherwise>
        write 2
    </c:otherwise>
</c:choose>

另一个可能的原因是EL根本就没有被评估。如果您的web.xml根声明错误,则可能会发生这种情况。另请参阅our JSTL wiki page的底部以获取正确的声明示例。

答案 1 :(得分:0)

如果“$ {logging == 1}”语法正确,我不是100%确定。

我一定见过,例如此类代码之前的“$ {logging eq 1}”语法。

此外 - 是否正确定义了变量记录?

如果可能,你能展示其余的代码吗?