我有以下代码:
<%@ page language="java" session="true" contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
request.setAttribute("action", request.getParameter("action"));
%>
<c:choose>
<c:when test="${action == null}">
NULL
</c:when>
<c:when test="${action == view}">
VIEW
</c:when>
</c:choose>
但是,当我使用?action=view
传递网址时,它不显示VIEW
。
我哪里错了?
答案 0 :(得分:2)
EL表达式${view}
正在页面,请求,会话或应用程序范围内查找与该名称完全相同的属性,如${action}
的工作方式。但是,您打算将其与字符串进行比较。然后,您应该使用引号使其成为真正的字符串变量,如${'view'}
。它也可以在普通的Java代码中使用。
<c:choose>
<c:when test="${action == null}">
NULL
</c:when>
<c:when test="${action == 'view'}">
VIEW
</c:when>
</c:choose>
顺便说一句,使用 scriptlet 将请求参数复制为请求属性是笨拙的。 You should not be using scriptlets at all。 ${param}
地图已经提供了EL请求参数。
<c:choose>
<c:when test="${param.action == null}">
NULL
</c:when>
<c:when test="${param.action == 'view'}">
VIEW
</c:when>
</c:choose>
这样你就可以摆脱整个<% .. %>
行。