所以,我有这个应该将参数发送到.jsp文件的Servlet:
request.setAttribute("parameter1", new BigDecimal(50));
RequestDispatcher requestDispatcher = request.getRequestDispatcher("/WEB/pages/page1.jsp");
requestDispatcher.forward(request, response);
但是,当我尝试使用jsp中的一些javascript代码警告此参数时,我收到一条空消息。另外,如果我使用JSP Expression使用Java将属性打印到控制台,我会得到null ..所以,我认为我没有正确地在这个servlet中发送参数,有人可以帮助我吗?
答案 0 :(得分:1)
有两种方法可以实现这一目标。
使用JSP 表达式,您可以使用<%= %>
作为(最后注意没有;
)
data : [<%= parameter1 %>, Y, Z]
第二种首选方式是使用JSP EL语法并直接使用request
引用${ }
属性
data : [${parameter1}, Y, Z]
第一个选项要求您先将属性拉出其范围。第二个没有。
BigDecimal parameter1 = (BigDecimal) request.getAttribute("parameter1");
答案 1 :(得分:0)
<强> SOLUTION:强>
我无法真正看到差异,只是改变自:
request.setAttribute("parameter1", new BigDecimal(50));
RequestDispatcher requestDispatcher = request.getRequestDispatcher("/WEB/pages/page1.jsp");
requestDispatcher.forward(request, response);
为:
request.setAttribute("parameter1", new BigDecimal(50));
request.getRequestDispatcher("/WEB/pages/page1.jsp").forward(request, response);
允许alert(${parameter1});
显示我传递的实际值,但是,当使用java读取参数时,我仍然为null。此外,我必须显示一些图表的JavaScript代码停止工作。
所以,我试图通过会话传递参数:
request.getSession().setAttribute("parameter1", new BigDecimal(50));
request.sendRedirect("/WEB/pages/page1.jsp");
这工作正常,现在我可以在.jsp文件中使用javascript和java获取我的参数。
似乎使用sendRedirect
重定向到新请求不会导致.jsp文件中的javascript代码崩溃,但是,我真的不知道为什么这种方法正在面对其他人,所以我道歉对于这个糟糕的答案,我从来没有真正使用过servlet和Jsp,但我真的很感激比我的更有说服力的答案,所以我也要学到更多。