当前位置 : 主页 > 编程语言 > java >

jsp – JSTL/EL中的三元运算符

来源:互联网 收集:自由互联 发布时间:2021-06-25
JSTL的以下标记可用于为请求范围中的变量设置值。 c:set var="value" scope="request" value="someValue"/ 我想有条件地检查,如果被设置的变量值为空或不是,并显示相应的结果,如下所示,使用
JSTL的以下标记可用于为请求范围中的变量设置值。

<c:set var="value" scope="request" value="someValue"/>

我想有条件地检查,如果被设置的变量值为空或不是,并显示相应的结果,如下所示,使用< c:when> …< / c:when&gt ;.

<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}"/>

那么它是语法错误指示,

“${empty value?’None’:value}” contains invalid expression(s):
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}"/>
网友评论