使用Spring和jQuery将一组对象从模型传递给JSP

时间:2012-09-12 15:10:18

标签: jquery jsp spring-mvc

我遇到了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 var中。

如果我尝试访问其他数组(字符串),它可以工作,我在控制台中有消息。

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

}

但是当我尝试访问其他数组时

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

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

1 个答案:

答案 0 :(得分:0)

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

var clients = ${model.arrClients};
如果${model.arrClients}的内容是["foo", "bar"],那么

就可以了,但不会是foo, bar。使用Javascript调试工具(Firebug,Chrome控制台等)查看控制台错误日志,并查看该行页面中的实际HTML输出。

第二个console.info()未出现的事实表明您的JSTL表达式导致了JS语法错误。

编辑:正如gigadot指出的那样,你不能把像Java一样的Java对象并在JSP中声明它 - 你只需要获得toString()表示,这通常不是你想要的。您需要使用带有<c:forEach>块的类似代码,并将每个元素一次添加到JS数组中(例如使用.push())。