JSTL / EL中的三元运算符

以下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>

我想使用三元表达式来减少代码行,

<c:out default="None" value="${not empty value ? value : 'None'}"/>

它按照其实际含义进行评估,但是如果我互换像这样的表达式的顺序,

<c:out default="None" value="${empty value ? 'None' : value}"/>

这是一个语法错误,表明

“ $ {空值?’None’:value}”包含无效表达式:javax.el.E​​LException:错误解析:$

那么为什么会这样呢?


我正在使用该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}" />

以上是 JSTL / EL中的三元运算符 的全部内容, 来源链接: utcz.com/qa/407408.html

回到顶部