我有这个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);
答案 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;