Javascript中的空Spring模型属性

时间:2014-05-29 13:07:50

标签: java javascript jquery spring spring-mvc

我有以下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}

2 个答案:

答案 0 :(得分:0)

你可以这样做:

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

当然在jsp中你需要

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

中的jsp。

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

答案 1 :(得分:0)

使用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试图促进的(即保持逻辑不在视野范围内)。