簡體   English   中英

Ajax和jstl,servlet setAttribute和javascript中jsp中的foreach

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM