Servlet不向.jsp文件发送参数

时间:2015-03-31 13:29:09

标签: java javascript jsp servlets

所以,我有这个应该将参数发送到.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中发送参数,有人可以帮助我吗?

2 个答案:

答案 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,但我真的很感激比我的更有说服力的答案,所以我也要学到更多。