我很困惑在什么时候使用, 以及使用这些参数的优缺点是什么。
有人可以帮我解决这个问题吗?
答案 0 :(得分:2)
所以你的问题是
actionRequest.setParameter(...)
和actionRequest.setAttribute(...)
之间的区别是什么?由于两个原因,这个问题仍然存在错误
setParameter(...)
方法
醇>
我认为你想要的是
参数是客户端发送给portlet的内容。它们通常作为URL的一部分(在GET HTTP方法的情况下在?符号之后)或包含在HTTP请求中(在POST HTTP方法的情况下)。您可以在portlet中使用getParameter(...)
方法来读取客户端发送给portlet的参数的值。拥有setParameter(...)
方法是没有意义的,因为您的portlet是这些参数的最终接收者。
属性是您在当前操作请求的上下文中存储和读取数据的方法。如果您的portlet调用其他clasess,它可以为它们准备一些数据并通过setAttribute(...)
方法将其存储在请求范围内。这个类可以稍后通过getAttribute(...)
读取该数据并将数据存储在自己的稍后由portlet读取。处理完请求后,请求范围就消失了。
最初可能令人困惑的一件事是actionResponse.setRenderParameter(...)
方法。请注意,回复不是请求!
actionRequest.setAttribute(...)
和actionResponse.setRenderParameter(...)
之间的区别是什么?要回答这个问题,您需要了解portlet的工作原理。客户端通过portlet容器与portlet交互。当他们向portlet P
发送操作请求时,他们会通过容器发送它。容器然后
P
P
响应时,将呈现请求发送到该页面上的每个portlet,包括P
。因此P
每个客户端请求从容器中重新发送两个请求(一个Action和一个Render)。在操作请求期间使用actionResponse.setRenderParameter(...)
来告诉包含者使用即将到来的呈现请求传递此参数。这实际上是将信息从动作传递到渲染阶段的方式。