繁体   English   中英

Servlet未将参数发送到.jsp文件

[英]Servlet not sending parameter to .jsp file

因此,我有这个Servlet,它应该将参数发送到.jsp文件:

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中正确发送参数,有人可以在这里帮助我吗?

有两种方法可以完成此操作。

使用JSP 表达式,您可以将<%= %>用作(注意no ;最后)

data : [<%= parameter1 %>, Y, Z]

第二种也是首选的方法是使用JSP EL语法,并使用${ }直接引用request属性。

data : [${parameter1}, Y, Z]

第一个选项要求您首先将属性拉出其范围。 第二个没有。

BigDecimal parameter1 = (BigDecimal) request.getAttribute("parameter1");

解:

我看不出有什么区别,只是从以下内容中进行了更改:

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,但是我真的很欣赏比我的结论性的答案,因此我也学到了更多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM