【问题标题】:MVC Spring Model - dynamically accessing attribute list indexMVC Spring Model - 动态访问属性列表索引
【发布时间】:2012-06-27 17:05:43
【问题描述】:

我有一个关于如何从模型属性列表中动态访问索引的问题。 在我的代码中,我有一些 javascript 从模型中读取值。该模型有一个可能是列表的属性。

document.getElementById("phoneNumberRPhone").value = "${model.people[index].phoneNumber.number}";

在这里,您可以看到我正在尝试将 javascript 值设置为从我可以有多个人的模型中检索到的数字。索引是我的动态值。如果我特别声明 model.people[0] 或 model.people[1] 效果很好,但如果我尝试设置一个数字来索引并动态使用索引,它就不再有效了。

如果有人能在这方面提供任何帮助,我将不胜感激。我确定这只是用户错误或语法使用不当的问题。

【问题讨论】:

    标签: java spring model-view-controller jsp modelandview


    【解决方案1】:

    显然${index} 在 JSP/EL 范围内根本不存在,此时 JSP/EL 必须打印那段 JS 代码。例如,它只会对你正在做的事情起作用(尽管这种方法非常值得怀疑):

    <c:forEach items="${model.people}" varStatus="loop">
        document.getElementById("phoneNumberRPhone").value = "${model.people[loop.index].phoneNumber.number}";
    </c:forEach>
    

    但请记住,JSP 只是一个 HTML 代码生成器,而 JavaScript 是其中的一部分。 JSP 和 JavaScript 不同步运行。在 webbrowser 中右键单击页面并执行 View Source 以查看它。

    【讨论】:

    • 感谢您的回答!我曾考虑使用 foreach,但这似乎是一种非常奇怪的方法,每次我想选择一个新值时都必须遍历列表。也许这是我编写代码的唯一方法。
    • 是的,如前所述,这种方法是有问题的。您实际上更有可能在完全错误的方向上寻找解决方案。如果您详细说明您认为这是正确解决方案的功能需求,那么我们也许能够提出正确的解决方案。再说一遍:JSP 是一个 HTML 代码生成器。所有的网络浏览器检索都是一个和所有的 HTML 代码以及一些 JS。 JSP 不在 webbrowser 中运行,而是在 webserver 中运行。 JS 在 webbrowser 中运行,而不是在 webserver 中。
    • 这可能是我需要从另一个角度来攻击它。这是上下文。我有一个已输入网络表单的客户名称。我提交表格并检索一些电话号码。我正在添加返回的电话号码以及作为模型的人员属性附加的人名。然后,我单击页面上的数据,并希望选择该特定人员以在其他地方重复使用。但是,可以返回的人数/数字是动态的。
    • 是否绝对有必要为此需要 JavaScript 而不是仅通过 ajax 将简单的表单提交到服务器?
    • 是的,你可以那样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-24
    • 2011-12-10
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    • 1970-01-01
    相关资源
    最近更新 更多