我看到了一些代码如下JSP

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

我的混淆,是过"="出现在价值的 test 属性。我的理解是,任何东西列入内 <%= %> 打印输出,但是肯定值分配的测试必须是一个布尔,那么为什么不这工作吗?

为奖励点数,是否有任何方式改变特性的价值以上,这样它不使用脚本代码?据推测,这意味着使用EL代替。

干杯, 别

有帮助吗?

解决方案

test 属性,看来对于确定如果事情真的是一串"真正的"(情况下,在敏感).例如,以下代码打印"hello world!"

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

代码以内 <%= %> 返回布尔,因此,它将打印的字符串的"真实"或"虚假",这是到底是什么 <c:if> 标签。

其他提示

你也可以用的东西喜欢

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

表达之间 <%=%>进行评估之前,c:如果标记进行评估。所以,假如|请求。isUserInRole|返回|true|,你的例会进行评估,以此为先:

<c:if test="true">
    <li>user</li>
</c:if>

然后c:如果标记,将被执行。

属性JSP标签的图书馆一般可以是静态的或得到解决,在请求的时间。如果他们决心在请求的时间JSP将解决他们的价值在运行时和传输上的标签。这意味着你可以把非常任JSP码进入的属性和标记的行为将据此来什么样的产出,产生。

如果你看jstl标签库的文档,你可以看到哪些属性reuest时间和哪些不是。 http://java.sun.com/products/jsp/jstl/1.1/docs/tlddocs/index.html

<%=%>通过本身将发送给输出,在上下文的JSTL这将是评估一个字符串

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top