我有简短的代码:
<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">
答案 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}”语法。
此外 - 是否正确定义了变量记录?
如果可能,你能展示其余的代码吗?