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

Dón*_*nal 14 java jsp jstl

我在JSP中看到了类似下面的代码

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

我的困惑在于test属性值中出现的"=" .我的理解是,包含在其中的任何内容<%= %>都会打印到输出中,但是分配给test的值肯定必须是布尔值,那么为什么这样做呢?

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

干杯,唐

Mic*_*ael 16

test属性寻找以确定某些内容是否为真的所有内容都是字符串"true"(不区分大小写).例如,以下代码将打印"Hello world!"

<c:if test="true">Hello world!</c:if>
Run Code Online (Sandbox Code Playgroud)

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


小智 11

你也可以使用类似的东西

<c:if test="${ testObject.testPropert == "testValue" }">...</c:if>
Run Code Online (Sandbox Code Playgroud)

  • 如果你在JSTL中嵌套引号,你需要对最里面的引号使用单引号(在这种情况下,围绕`'testValue'`). (7认同)