簡體   English   中英

如何正確執行JSP代碼以將HttpSession中的值檢索到JavaScript函數中?

[英]How can I correctly execute JSP code to retrieve a value from the HttpSession into a JavaScript function?

我正在使用基於HttpServlet的非常舊的舊版Java Web應用程序,嘗試將JSP代碼運行到JavaScript函數中時遇到以下問題。

因此,在JSP頁面中,我發現了這個JavaScript函數,該函數給我帶來了一些問題:

function rifiuta() {

    document.getElementById('notaRifiuto').value = document.getElementById('myRejectNote').value;

    my_pkcoda = '<%=((request.getSession().getAttribute("doc_num")!=null?((String)request.getSession().getAttribute("doc_num")).trim():""))%>';

    document.getElementById(my_pkcoda).checked = true;
    checkRifiuta();
}

這很簡單:

它被宣布為** ** my_pkcoda那些試圖從是neamed doc_num HttpSession中獲得的值進行初始化,這是通過:

request.getSession().getAttribute("doc_num")

我非常確定該值已放入HttpSession中,因為我將其放入會話中(是通過(放入實現HttpServlet的類中:

req.getSession().setAttribute("doc_num", req.getParameter("pk"));

然后執行此操作后,我將使用調試器檢查它是否正確放入了會話中,並且可以,它已經進入了會話中。

問題在於,當進入我的JSP頁面時,當嘗試執行此語句時,將執行rifiuta() JavaScript函數:

my_pkcoda = '<%=((request.getSession().getAttribute("doc_num")!=null?((String)request.getSession().getAttribute("doc_num")).trim():""))%>';

我獲得my_pkcoda值為null。

可能是什么問題呢? 我想念什么?

TNX

從服務器加載網頁后,僅對JSP scriptlet標記進行一次評估。 第一次從服務器加載頁面時,該scriptlet表達式的值將作為文本粘貼到JS函數中。

在JS函數rifiuta每次調用中,該值都不會從會話中加載。

因此,如果您在單擊按鈕時調用rifiuta,則不會從會話中獲取doc_num屬性的最新值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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