JSTL <c:if> 标记中的 test 属性

2022-09-03 17:40:20

我在JSP中看到了一些类似于以下内容的代码

<c:if test="<%=request.isUserInRole(RoleEnum.USER.getCode())%>">
    <li>user</li>
</c:if>

我的困惑在于属性值中显示的“=”。我的理解是,其中包含的任何内容都会打印到输出中,但是分配给测试的值肯定是布尔值,那么为什么这有效呢?test<%= %>

对于奖励积分,有没有办法更改上面的属性值,使其不使用脚本代码?据推测,这意味着使用EL代替。

干杯,唐


答案 1

该属性为确定某些内容是否为真而查找的只是字符串“true”(不区分大小写)。例如,下面的代码将打印“Hello world!test

<c:if test="true">Hello world!</c:if>

中的代码返回一个布尔值,因此它将打印字符串“true”或“false”,这正是标记所查找的内容。<%= %><c:if>


答案 2

您还可以使用类似的东西

<c:if test="${ testObject.testPropert == "testValue" }">...</c:if>