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