Velocity模板-在Velocity foreach中使用Java脚本变量

时间:2019-03-01 16:57:03

标签: javascript java spring velocity

我有,所以我的ModelMap中有一个名为 cityLocationCodes 的地图。 我想访问此地图并根据当前用户的选择获得价值。

我有以下javascript代码:

<script>

function getCoutryValue(countrySelect) {
    var countryValue = countrySelect[countrySelect.selectedIndex].value;
    console.log(countryValue)

    return countryValue;
}

document.addEventListener('DOMContentLoaded', function () {
    var countrySelect = document.getElementById('country');
    var countryValue = getCoutryValue(countrySelect);
    console.log(countryValue);

    #foreach ($location in $cityLocationCodes.get(countryValue))
        console.log("$location.name");
    #end

});

问题是我真的无法在foreach循环内传递 var countryValue 来从地图中获取正确的值- $ cityLocationCodes.get(countryValue)-它不会工作。

我也尝试了另一种方法-

    document.addEventListener('DOMContentLoaded', function () {
    var countrySelect = document.getElementById('country');
    var countryValue = getCoutryValue(countrySelect);
    console.log(countryValue);
    var cities = $cityLocationCodes;
    for (i = 0; i < cities.get(countryValue).length; i++) {
        console.log(cities.get(countryValue)[i].name);
    }

当我在Chrome浏览器中打开“源”时,它确实以某种方式看到了地图,但是随后出现未捕获的语法错误。所以问题是: 如何根据我选择的键从控制器传递的映射中获取值?

1 个答案:

答案 0 :(得分:0)

这里有个很大的误会。

将HTTP请求发送到服务器并将HTTP响应发送回浏览器后,就会在客户端的浏览器中评估Javascript代码。

在生成HTTP响应的同时,在服务器上评估Velocity代码。

因此您不能混合使用Javascript和Velocity变量。

如果要在Javascript事件中从服务器获取特定值,则必须诉诸Ajax调用。