【问题标题】:JSTL Condition with multiple operators具有多个运算符的 JSTL 条件
【发布时间】:2012-02-01 20:44:56
【问题描述】:

我正在尝试在具有多个运算符的 JSTL 中编写条件。

<c:if test="${!memberObj.provider && empty subscriptions or subscriptions eq false}"></c:if>

上面没有正确执行,因为需要包含“empty subscriptions or subscriptions eq false”

我希望能够做到:

${!memberObj.provider && (empty subscriptions or subscriptions eq false)}

但是当我这样做时,jsp 页面变为空白。我猜这意味着有些事情发生了......

如何在 JSTL 中将“and”和“or”运算符组合在一个条件中?

提前致谢!

【问题讨论】:

  • 看起来有效(虽然有点笨拙)。空白不是只是由其他原因引起的吗?当响应已经提交时,JSP 代码中的异常是否更进一步?右键单击页面并执行 View Source 以查看浏览器实际检索到的内容。大多数人在检索到半生不熟的 HTML 时也会空白。
  • 有点离题,但根据运算符优先级!memberObj.provider &amp;&amp; empty subscriptions or subscriptions eq false!memberObj.provider &amp;&amp; (empty subscriptions or subscriptions eq false) 不同
  • 好吧,你是对的,它实际上发生在页面的下方。因此,当条件正确运行时,它会运行到页面上不应该出现的一些 java 代码,这可以通过改进条件以更好地处理它来解决。谢谢!继续发表您的评论作为答案,以便我接受。

标签: java jsp jstl el


【解决方案1】:

这看起来有效(尽管有点笨拙;混合了几种样式,不需要进行布尔比较)。

浏览器在检索到无效的 HTML 时可能会变为空白。我敢打赌,代码中还有一些 Java 代码会在响应已经提交时引发异常。由于响应已经提交,服务器将无法完整显示错误页面(尽管它会记录异常)。浏览器最终会得到一个不完整的 HTML 响应,浏览器无法以任何合理的方式解释它,因此它将变为空白。

【讨论】:

    猜你喜欢
    • 2016-11-02
    • 2014-03-08
    • 2020-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-29
    • 2012-09-14
    相关资源
    最近更新 更多