我正在尝试在JSP页面中检索由servlet设置的属性值,但我只是通过${param}
的参数运气。我不确定我能做些什么不同。也许它很简单,但我还是无法管理它。
public void execute(HttpServletRequest request, HttpServletResponse response) {
//there's no "setParameter" method for the "request" object
request.setAttribute("attrib", "attribValue");
RequestDispatcher rd = request.getRequestDispatcher("/Test.jsp");
rd.forward(request,response);
}
在JSP中,我一直在尝试检索“attribValue”,但没有成功:
<body>
<!-- Is there another tag instead of "param"??? -->
<p>Test attribute value: ${param.attrib}
</body>
如果我通过所有进程(调用页面,servlet和目标页面)传递参数,那么它的效果非常好。
答案 0 :(得分:26)
它已经在默认的EL范围内可用,所以只需
${attrib}
应该这样做。
如果您想明确指定范围(EL将按顺序搜索与属性名称匹配的第一个非null属性值的页面,请求,会话和应用程序范围),那么您需要通过范围引用它而是映射,对于请求范围是${requestScope}
${requestScope.attrib}
这只有在可能在页面范围内具有完全相同名称的属性时才有用,否则它将优先(但这种情况通常表示设计不佳)。
答案 1 :(得分:9)
也许EL
语法和scriptlet
语法之间的比较可以帮助您理解这个概念。
param
与request.getParameter()
requestScope
与request.getAttribute()
您需要告诉request attribute
request parameter
。
答案 2 :(得分:2)
你尝试过使用
吗?<% request.getAttribute("attrib"); %>
答案 3 :(得分:0)
如果范围是请求类型,则在请求中使用request.setAttribute(key,value)设置属性,并在jsp中使用$ {requestScope.key}进行检索。