JSTL/EL 中的三元运算符 [英] Ternary operator in JSTL/EL

查看:26
本文介绍了JSTL/EL 中的三元运算符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

JSTL 的以下标签可用于为请求范围内的变量设置值.

The following tag of JSTL can be used to set a value to a variable in a request scope.

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

我想有条件地检查,如果设置的变量 value 是否为空,并相应地显示结果,如下所示,使用 <c:when>...</c:when>.

I want to check conditionally, if the variable value being set is empty or not and display the result accordingly something like the following, using <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>

我想使用像这样的三元表达式来减少代码行

I want to reduce the line of code using a ternary expression like,

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

它按照实际意思进行评估,但如果我交换表达式的顺序,如

It is evaluated as it actually means but if I interchange the order of the expressions like,

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

然后是语法错误提示,

"${empty value?'None':value}" 包含无效表达式:javax.el.E​​LException:错误解析:${empty value?'None':value}

"${empty value?'None':value}" contains invalid expression(s): javax.el.ELException: Error Parsing: ${empty value?'None':value}

为什么会发生这种情况?

So why does this happen?

我正在使用 JSTL 1.1 库并包含以下 taglib,

I'm using the JSTL 1.1 library and the following taglib is included,

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

推荐答案

我在 Tomcat 5.59、JSP 2.0 和 JSTL 1.1 中测试了以下页面.它运行没有任何错误.

I tested the following page in Tomcat 5.59, JSP 2.0 and JSTL 1.1. It ran without any errors.

<%@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 中的三元运算符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆