0

我如何知道渲染阶段是否是 portlet 的第一个渲染阶段?

我想在 Liferay 中显示我所有组织用户的列表,并能够通过在文本字段中写入名称来过滤结果。

在文本字段中插入用户名时出现了我的问题。我想在他/她的某些属性中搜索具有该名称的用户,并仅显示这些用户。我不知道为什么,尽管我将生成的重新搜索作为属性存储在 actionRequest 中,但仍会再次显示所有用户:

actionRequest.setAttribute("usersList", users);

并尝试仅打印这些用户。此操作阶段之后的渲染阶段不会使用我的属性来仅渲染已创建的用户。

因此,我的意图是以某种方式确定我的渲染阶段是否是第一个阶段,或者它是否在操作阶段之后,以便我可以创建一个条件来打印所有用户或打印存储在 actionRequest.setAttribute 中的列表中的用户。

非常感谢您,希望您能提供帮助,顺便说一句,我继续自己研究。

4

3 回答 3

1

让我详细介绍一下请求的类型

1)动作请求:这些用于向服务器提供数据,如发布、提交表单、提交时的更多处理(数据存储)

2) 渲染请求:他们绘制你的 html 部分,在这里你可以从数据库中检索数据,排列它,对它进行分类并存储在请求属性中,从表示层,获取它并绘制它。

如果你想直接使用render请求,请创建一个render URL而不是action URL,比如说,如果你有表单的提交按钮,那么你的html表单的action属性应该有“”,这将直接调用render方法并且不会采取行动。

希望这可以帮助。

——菲利克斯

于 2012-06-04T07:09:27.580 回答
0

我有个坏消息,你不能将类似的参数从动作请求传递到渲染请求,因为动作请求只存在于动作阶段。因此,您无法从渲染阶段检索这些值。

将属性从动作传递到渲染的唯一方法(据我所知)是使用

actionResponse.setRenderParameter("name", "value")

注意值必须是字符串!因此,您不能传递例如对象列表。

你的选择是

1)在渲染阶段进行实际搜索。2)将结果放在会话中,因此它们也可以在渲染阶段使用。

如果您选择选项 1,则完全忘记操作阶段并将您的搜索表单发布到渲染阶段方法。这就是我在这些情况下经常做的事情。

于 2012-05-23T20:33:36.360 回答
0

尝试使用 ActionResponse.setRenderParameter。渲染参数将在 Render 阶段存在,您可以使用 RenderRequest 类中的 getParameter 方法访问它们。

于 2012-05-23T09:59:40.993 回答