【问题标题】:Empty Spring Model Attributes in JavascriptJavascript 中的空 Spring 模型属性
【发布时间】:2014-05-29 13:07:50
【问题描述】:

我有以下 javascript 代码块,并且模型中的一个名为“total_calls_p”的变量从 spring 传递到我的 jsp 页面。

var c = 0;
if (${! empty total_calls_p})
    c = ${total_calls_p};

页面首次加载时,total_calls_p 变量不在模型中,因此为空。我试图用上面的 if 语句来解释这一点。但是,即使使用 if 语句,javascript 也会出错,因为代码如下所示:

var c = 0;
if (false)
    c = ;

这会导致错误:

Uncaught SyntaxError: Unexpected token ;

如果属性为空,有没有办法让 jquery 设置默认值?也许是这样的:

${total_calls_p default 0}

【问题讨论】:

  • 为什么到处乱搞?让控制器给模型添加一个默认值不是更简单吗?你不应该在你的视图中做这种逻辑。

标签: java javascript jquery spring spring-mvc


【解决方案1】:

在将值放入输出之前,使用 JSTL Core 标记库检查值。如果条件通过,则 HTML(在本例中为 javascript)将被渲染到输出。如果表达式不满足,则不会渲染:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:if test="${not empty total_calls_p}">
    c = ${total_calls_p};
</c:if>

你有什么理由不能一开始就把值 0 放在你的 spring 模型中吗?那么您就不必在视图中执行此逻辑,这是 spring 试图促进的(即,将逻辑排除在视图之外)。

【讨论】:

    【解决方案2】:

    你可以这样做:

    <c:set var="jsTotal" value="${empty total_calls_p ? total_calls_p : '0'}" />
    c = ${jsTotal};
    

    当然在jsp中你需要有

    &lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %&gt;

    在jsp中。

    当然,您也可以在控制器中进行更改,让模型简单地将值设置为 javascript 变量

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-12
      • 2019-05-17
      • 1970-01-01
      • 2018-11-30
      • 2012-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多