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