【问题标题】:Velocity template - using java script variables in velocity foreachVelocity 模板 - 在velocity foreach 中使用java 脚本变量
【发布时间】:2019-03-02 22:30:44
【问题描述】:

我有,所以我的 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 浏览器中打开“源”时,它确实以某种方式看到了地图,但随后我得到 未捕获的语法错误。所以问题是: 如何根据我的选择中的键从控制器传递的映射中获取值?

【问题讨论】:

  • 为什么是 java 标签?

标签: javascript java spring velocity


【解决方案1】:

这里有一个很大的误会。

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

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

所以你不能混合使用 Javascript 和 Velocity 变量。

如果您想在 Javascript 事件上从服务器获取特定值,则必须使用 Ajax 调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-28
    • 2018-02-27
    • 1970-01-01
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 2022-11-11
    相关资源
    最近更新 更多