我想在JSTL中转换一些代码。具体来说我实施了
<c:if test='${request.scheme == "http"}'>
</c:if>
取代
if ("http").equals(request.getScheme()) {
//do something
}
但看起来JSTL语法不正确且条件永远不匹配。我没有收到任何错误。
我的语法不正确吗?
请指导。
答案 0 :(得分:2)
普通JSP中不存在${request}
隐式EL对象。它只存在于几个也使用EL的MVC框架中,例如JSF。您可以通过直接打印${request}
并注意到它实际上没有打印任何内容来轻松地弄清楚它。
The request implicit EL object is: ${request}
在普通JSP中,ServletRequest
仅由PageContext#getRequest()
提供,而PageContext
则可用作隐式EL对象${pageContext}
。
<c:if test="${pageContext.request.scheme eq 'http'}">
...
</c:if>
请注意,单引号可用于表示EL中的String
。
无关,如果您确实要将安全(SSL)请求与不安全的请求区分开来,最好再检查ServletRequest#isSecure()
。
<c:if test="${not pageContext.request.secure}">
...
</c:if>