![](/img/trans.png)
[英]Access Java / Servlet / JSP / JSTL / EL variables in JavaScript
[英]Ajax and jstl, servlet setAttribute and foreach in jsp inside javascript
我得到了這個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);
是的,如果JSTL的目的是動態構造Javascript代碼,則可以將JSTL與Javascript混合使用。 在執行客戶端(Javascript)之前,首先生成服務器端代碼(通過JSTL)。 我看不到EL(表達式語言)和JQuery使用的美元符號表示任何沖突。
jQuery使用$()
EL使用${}
我剛剛在此鏈接中找到了解決方案
您無法執行此操作,因為javascript在客戶端執行,而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);%>
在上面的代碼中,服務器將僅在<%%>內部執行代碼。 它不知道JSP標記之外的任何內容。 因此,它也不知道您的JavaScript變量號。
服務器執行代碼並將結果發送到瀏覽器,然后您的瀏覽器將執行該javascript代碼var number=7;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.