次のJSTLのタグを使用して、要求スコープの変数に値を設定できます。
<c:set var="value" scope="request" value="someValue"/>
設定されている変数value
が空かどうかを条件付きで確認し、それに応じて<c:when>...</c:when>
を使用して次のような結果を表示します。
<c:choose>
<c:when test="${not empty value}">
<c:out default="None" value="${value}"/>
</c:when>
<c:otherwise>
<c:out default="None" value="None"/>
</c:otherwise>
</c:choose>
次のような3項式を使用してコードの行を減らしたい
<c:out default="None" value="${not empty value ? value : 'None'}"/>
実際の意味で評価されますが、式の順序を入れ替えると、
<c:out default="None" value="${empty value ? 'None' : value}"/>
それは、構文エラーであり、
「$ {empty value? 'None':value}」に無効な式が含まれています:javax.el.ELException:Error Parsing:$ {empty value? 'None':value}
なぜこれが起こるのですか?
JSTL 1.1
ライブラリを使用しており、次のtaglibが含まれています。
<%@taglib prefix="c" uri="http://Java.Sun.com/jsp/jstl/core"%>
Tomcat 5.59で次のページをテストしました。[〜#〜] jsp [〜#〜] 2.0および[〜#〜] jstl [〜#〜] 1.1。エラーなしで実行されました。
<%@taglib uri="http://Java.Sun.com/jsp/jstl/core" prefix="c"%>
<c:set var="value" scope="request" value="someValue"/>
<c:out default="None" escapeXml="true" value="${not empty value ? value : 'None'}" />
<c:out default="None" escapeXml="true" value="${empty value ? 'None' : value}" />
<c:set var="value" scope="request" value="" />
<br/>
<c:out default="None" escapeXml="true" value="${not empty value ? value : 'None'}" />
<c:out default="None" escapeXml="true" value="${empty value ? 'None' : value}" />