1

次のコードがあります。

<%@ 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>

ただし、でURLを渡すと?action=view、表示されませんVIEW

どこが間違っていますか?

4

1 に答える 1

2

EL式は、how works${view}のように、ページ、リクエスト、セッション、またはアプリケーションスコープで正確にその名前の属性を探しています。${action}ただし、それを文字列と比較するつもりでした。次に、引用符を使用して、 so のような真の文字列変数にする必要があります${'view'}。通常の Java コードでも同様に機能します。

<c:choose>
    <c:when test="${action == null}">
        NULL
    </c:when>
    <c:when test="${action == 'view'}">
        VIEW
    </c:when>
</c:choose>

ところで、そのスクリプトレットを使用してリクエスト パラメータをリクエスト属性としてコピーするのは面倒です。スクリプトレットは一切使用しないでください。HTTP 要求パラメーターは EL 内にあり、${param}マップによって既に使用可能です。

<c:choose>
    <c:when test="${param.action == null}">
        NULL
    </c:when>
    <c:when test="${param.action == 'view'}">
        VIEW
    </c:when>
</c:choose>

このようにして、行全体を取り除くことができます<% .. %>

以下も参照してください。

于 2013-10-11T17:46:19.980 に答える