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