Ajax和jstl,servlet setAttribute和jsp里面的jsp中的foreach

时间:2015-10-12 22:55:14

标签: javascript ajax jsp servlets

我有这个ajax函数,它从我的servlet中获取一些信息。我需要在多行中显示此信息。所以在我开始创建一些疯狂的长字符串并开始使用javascript进行处理之前,我想听听是否可以执行类似下面的操作。

基本上这个ajax函数会向我的servlet询问一个列表,我希望我的c:forEach在成功时显示。

        $.ajax({
                type: "POST",
                url: "eventHandler",
                data: {"action" : "searchCards"},
                success: function(data){  
                    <c:forEach items="${Cards}" var="c"> 
                        $(".rightWrapperDisplaySearch").append(${c.color});
                    </c:forEach>     
                },
                error : function() {
                    Announce("Error!");     
                },
            });

我的servlet方法

String searchCriteria = request.getParameter("value");          

            LIST = (ArrayList<Cards>) DAO.findAllCards();

            request.setAttribute("Cards", LIST);
            request.getRequestDispatcher("/WEB-INF/jsp/view/All/startPage.jsp").forward(
                    request, response);

2 个答案:

答案 0 :(得分:0)

是的,如果JSTL的目的是动态构造Javascript代码,那么将JSTL与Javascript混合是可能的。服务器端代码(通过JSTL)首先在客户端执行(Javascript)之前生成。我没有看到与EL(表达式语言)和JQuery使用的美元$符号有任何冲突。

JQuery使用$()

EL使用${}

答案 1 :(得分:0)

我刚刚在this link

找到了解决方案

你不能这样做,因为javascript在客户端&amp; JSP在服务器端执行。

如果要将javascript变量设置为JSP会话,则可以通过URL传递此变量,如此

 var number = 7;
    window.location="http://example.com/index.jsp?param="+number;

现在在JSP页面中收到此var

String var = request.getParameter("param");

现在将其设置为会话

  session.setAttribute("test", var);

现在你不能使用下面的代码行:

var number = 7;
<%session.setAttribute("test", number);%>

在上面的代码中,服务器只会执行&lt; %%&gt;内的代码。它不知道JSP标记之外的任何内容。所以,它也不会知道你的javascript变量号。

服务器执行代码&amp;结果将发送到浏览器,然后您的浏览器将执行该javascript代码var number=7;