【问题标题】:jstl - choose/whenjstl - 选择/何时
【发布时间】:2012-02-18 18:23:48
【问题描述】:

我有短代码:

<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' 是一个字符串。它显示 ' added' 和 ${logging['class']} 显示 'class java.lang.String',但它仍然写 'write 2'

我也有 声明

我的 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">

【问题讨论】:

  • “记录”是否与会话或请求绑定?
  • 你使用的是什么 servletcontainer?

标签: jsp jstl


【解决方案1】:

如果值根本不是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 的底部以获取正确的声明示例。

【讨论】:

    【解决方案2】:

    我不能 100% 确定 "${logging==1}" 语法是否正确。

    我肯定见过,例如"${logging eq 1}" 在此类代码之前的语法。

    另外 - 变量日志记录是否定义正确?

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

    【讨论】:

    • ${logging == 1} 是正确的。我什至更喜欢它而不是 ${logging eq 1},因为它对我来说更具可读性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-29
    • 1970-01-01
    • 2011-02-10
    • 2016-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多