JSTL/EL 中的三元运算符

2024-01-18

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

那么它是一个语法错误,表明,

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

那么为什么会出现这种情况呢?


我正在使用JSTL 1.1库和以下标签库包含在内,

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

我在Tomcat 5.59中测试了以下页面,JSP2.0 和JSTL1.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}" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JSTL/EL 中的三元运算符 的相关文章

  • 来自 jsp:include 的 JSF 1.2 自定义组件

    在开始回答我的问题之前 我先说一下我的不幸的局限性 我使用的是 JSF 1 2 而不是 2 所以没有复合组件 我使用 JSP 代替 Facelets 进行渲染 所以这些复合组件也没有 我不允许使用任何第三方标签库 richFaces ice
  • 丰富:数据表行跨度问题

    我需要创建一个 rich dataTable 甚至扩展 具有以下功能 我有一个公司类 其中包含产品对象的集合 我想展示下表 我仍然没有弄清楚如何使用子表执行此操作 在所有示例中 我发现子表具有与主表完全相同的列 据推测 我需要在前两列中使用
  • 使用 Spring MVC 在 jar 文件中显示 jsp 页面

    我正在使用 Spring MVC 3 2 2 在 java 中开发一个 Web 应用程序 我在从 jar 文件中加载 jsp 页面时遇到问题 Spring MVC Web应用程序具有以下结构 META INF WEB INF spring
  • JSP中如何在两个变量之间插入空格? [复制]

    这个问题在这里已经有答案了 我在 JSP 页面上的表单中有一行 html 如下所示
  • 在 passtrough 属性中使用 f:selectItems var

    我可以将表达式传递给 JSF 2 传递属性吗 以下代码不起作用 表达 country isoCode 不予评价
  • struts 教程或示例

    我正在尝试在 Struts 中制作一个登录页面 这个想法是验证用户是否存在等 然后如果有错误 则返回到登录页面 错误显示为红色 典型的登录或任何表单页面验证 我想知道是否有人知道 Struts 中的错误管理教程 我正在专门寻找有关的教程 或
  • Eclipse jsp 编辑器中出现错误

    我在 jsp 文件中遇到错误 在 X 行上 但这一切似乎都是正确的
  • 如何在我的网站上获取用户的国旗

    我想在我的网站上显示用户 访问者的国旗 我使用不同的技术 如 php jsp 和简单的 html 所以我想要一个代码 通过放置在我的网站上 访问者可以看到它 并且它应该在所有平台上运行 简而言之 我想要国家检测 API 如果有人能帮助我 我
  • PHP 中 C# 的空合并运算符 (??)

    PHP 中是否有三元运算符或类似的操作符 of C 在 C 中是干净且简短的 但在 PHP 中你必须执行以下操作 This is absolutely okay except that REQUEST test is kind of red
  • 使用空合并运算符的独特方法[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我知道使用的标准方法空合并运算符 https en wikipedia org wiki Null coalescing operator在C
  • 三元运算符结合性

    我无法理解三元运算符上下文中的结合性概念 在大多数情况下 三元运算符如下所示 a b c 在这种情况下 不需要结合性来计算表达式 但有时 三元运算符是嵌套的 a b c d e a b c d e is right associative
  • 在 JSTL 中使用枚举

    我正在尝试使用 jstl 进行一些网站开发 但遇到了 出现以下问题 这里我试图创建一个下拉列表 其中显示的值是 国家名称 值为国家代码 为了做到这一点我 在后端java代码中有以下枚举 public static enum CountryC
  • 仅当 css 文件存在时才将其包含在 jsp 中

    我正在尝试使用默认 css 设计一个应用程序 我想要一个选项 我可以包含新的 css 自定义 文件来更改默认皮肤 我可以通过在 jsp 页面中引用 自定义和默认 css 来实现此目的 其中默认值将始终存在 并且可以为不同用户加载自定义 cs
  • Android:从http获取文件并存储在SDCard中

    我已经遵循了许多类似问题中所写的内容 但仍然存在问题 从jsp我得到一个pdf 如果我转到URL 浏览器会自动打开pdf jsp页面会执行类似以下操作 Gets the pdf from the database BufferedInput
  • javax.servlet.jsp.JspTagException:在语言环境“en_US”的代码“errors.contact.sysadmin.msg”下找不到消息。]

    我已经像这样配置了我的消息资源 tradelc servlet xml
  • 自定义 JSP 标记 - 检测其他实例的存在

    自定义 JSP 标记是否可以检测页面中是否存在其自身的其他实例 如果是这样 首选的方法是什么 我的标签的输出需要有条件地取决于它是否是唯一的实例 请注意 我的页面出现了三次标签 其中两个具有与第三个不同的属性集 因此我知道从资源池分配了两个
  • Maven 依赖项 jar 内的 Taglib。如何在 web.xml 中配置此标签库?

    所以我曾经这样配置我的标签库
  • 文件上传处理程序

    这是文件上传处理程序的代码 这在我的服务器上工作正常 但上传文件后仅显示文件上传成功但我还想显示上传的文件的名称 import java io File import java io IOException import java util
  • JSP中eq和==的区别

    JSP 表达式语言中关键字 eq 和运算符 之间有什么区别 如果有 在代码中 有什么区别
  • 将属性标记中的值提交到操作表单

    The JSP

随机推荐