使用 Spring 和 jQuery 将对象数组从模型传递到 JSP

问题描述 投票:0回答:1

我面临 JSP 和 Spring 的问题,我试图将对象数组从模型传递到视图(JSP)。

这是我在控制器部分的代码:

@RequestMapping(value = "/clientes.html")
public ModelAndView handleRequest(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException  {

    Map<String, Object> myModel = new HashMap<String, Object>();
    myModel.put("arrClients", this.clientManager.getClients());
    myModel.put("clientNames", this.clientManager.getNames());
    return new ModelAndView("clients", "model", myModel);
}

在 JSP 文件中,我可以使用 jstl 访问“arrClients”,例如:

    <c:forEach items="${model.arrClients}" var="client">
        <div id="newClient">
            <p>
                <c:out value="${client.name}" />
                <i><c:out value="${client.surname}" /></i>
            </p>
        </div>
    </c:forEach>

这段代码正在工作,但我想访问 中的这个数组,将其存储在 jQuery 变量中。

如果我尝试访问其他数组(字符串),它是有效的,并且我在控制台中看到了消息。

$(function() {
    var clientNames = ${model.clientsNames};
            console.info('it Works!!');

}

但是当我尝试访问另一个数组时

$(function() {
    var clients = ${model.arrClients};
            console.info('it Works!!');
}

我无法访问该数组,我什至无法获取控制台消息。 有谁知道如何使用 jQuery 访问 JSP 文件中的对象数组?

jquery jsp spring-mvc
1个回答
0
投票

您需要记住,JSP 输出在 JS 中被解释,就像您自己输入一样。因此你的路线:

var clients = ${model.arrClients};
如果

${model.arrClients}

 的内容是 
["foo", "bar"]
 的话 
就可以了,但是如果是
foo, bar
之类的东西就不行了。使用 Javascript 调试工具(Firebug、Chrome 控制台等)查看控制台错误日志,并查看页面中该行的实际 HTML 输出。

第二个

console.info()
没有出现,表明你的JSTL表达式导致了JS语法错误。

编辑:正如 gigadot 指出的那样,你不能采用像列表或数组这样的 Java 对象并在 JSP 中声明它 - 你只会得到

toString()
表示,这通常不是你想要的。您需要使用类似的代码和
<c:forEach>
块,并将每个元素添加到 JS 数组中,一次一个(例如使用
.push()
)。

© www.soinside.com 2019 - 2024. All rights reserved.