如何动态参数化 portlet?

发布于 2024-12-08 00:21:30 字数 284 浏览 1 评论 0 原文

Portlet 一个编辑模式,这就是我们参数化它们的方式。

我的问题是,以编程方式在加载 portlet 时准确地对其进行参数化的最佳方法是什么。

例如:我想让 Liferay 加载具有特定 ID 的 portlet 的两个实例,一个使用 paramA,第二个使用 paramB

Portlets have an EDIT mode, and this is the way we can parametrize them.

My question is what it the best way to parametrize a portlet exactly at the moment its loaded, programmatically.

For example: I want to get Liferay to load two instances of the portlet with a certain ID, one with paramA, second with paramB.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

月亮坠入山谷 2024-12-15 00:21:30

要加载不同的参数(在 Liferay 中更名为“Portlet Preferences”),您可以使用 PortletPreferences 来存储和检索不同的参数,

PortletPreferences preferences =
    PortletPreferencesFactoryUtil.getPortletSetup(
        request, portletId);

factory 需要 2 个参数,

  • Request - 请求。
  • PortletId - Portlet 的 ID(例如“name_WAR_myportlet_INSTANCE_ABCD”)。

通过这个对象,您可以获取参数:

String myValue = preferences.getValue("my-value");

并且您可以存储值:

preferences.setValue("my-value", "this-value");
preferences.store();

To load different parameters (better known in Liferay as "Portlet Preferences") you can use PortletPreferences to store and retrieve different parameters,

PortletPreferences preferences =
    PortletPreferencesFactoryUtil.getPortletSetup(
        request, portletId);

The factory takes 2 parameters,

  • Request - The request.
  • PortletId - The ID of your portlet, (for example "name_WAR_myportlet_INSTANCE_ABCD").

With this object you can get parameters:

String myValue = preferences.getValue("my-value");

And you can store values:

preferences.setValue("my-value", "this-value");
preferences.store();
给不了的爱 2024-12-15 00:21:30

“Liferay embed portlet”对我解释您的问题所要求的内容提供了很好的基本搜索(但我并不完全清楚)。

有了这个,我发现了类似 在您的 portlet 中嵌入 portlet< /a> 和
在 Web 内容中嵌入 Portlet 看起来很匹配。

如果不是我赞同brandizzi的评论:请给出高级问题(您需要以业务术语解决)而不是建议的解决方案(您需要技术细节,即使这对原始问题来说是一个糟糕的解决方案)

"Liferay embed portlets" gives a good basic search on what I interpret your question to ask for (but it's not fully clear to me).

With this I find hits like Embedding portlets in your portlet and
Embedding Portlets in Web Content that seem to match.

If it's not that I second brandizzi's comment: Please give the high level problem (that you need to solve in business terms) instead of the proposed solution (that you need the technical details for, even if it's a bad solution for the original problem)

反话 2024-12-15 00:21:30

您可以使用 url 参数。

我将描述两种方法。

1) 为每个 portlet 使用不同的参数,但您必须使用要查找的参数名称(每个 portlet 不同)来配置每个 portlet(portlet 首选项)。

final String parameter = p_request.getPreferences().getValue("parameterName", null));

javax.servlet.http.HttpServletRequest request = com.liferay.portal.util.PortalUtil.getOriginalServletRequest(com.liferay.portal.util.PortalUtil.getHttpServletRequest(p_request));
final String paramValue = request.getParameter(parameter);

用法示例: http://www.myserver.com/mypagewithportlets?param1=something1& param2=somethnig2

2) 使用以portlet命名空间为前缀的参数,但使用参数时需要知道portlet id(napespace是portlet id,前缀=后缀=_)

javax.servlet.http.HttpServletRequest request = com.liferay.portal.util.PortalUtil.getOriginalServletRequest(com.liferay.portal.util.PortalUtil.getHttpServletRequest(p_request));
final String paramValue = request.getParameter(p_response.getNamespace() + "myparameter");

使用示例:http://www.myserver.com/mypagewithportlets?_name_WAR_myportlet_INSTANCE_xzy1_myparameter=something1&_name_WAR_myportlet_INSTANCE_syhs_myparameter=somethnig2

只是一个注释
p_request 实现 javax.portlet.PortletRequest
p_response 实现 javax.portlet.PortletResponse

You could use url parameters.

I'll describe two approaches.

1) Use different parameters for each portlet, but you have to configure each portlet (portlet preferences) with parameter name which to look for (different for each portlet).

final String parameter = p_request.getPreferences().getValue("parameterName", null));

javax.servlet.http.HttpServletRequest request = com.liferay.portal.util.PortalUtil.getOriginalServletRequest(com.liferay.portal.util.PortalUtil.getHttpServletRequest(p_request));
final String paramValue = request.getParameter(parameter);

usage example: http://www.myserver.com/mypagewithportlets?param1=something1¶m2=somethnig2

2) Use parameter prefixed with portlet namespace, but when using parameters you need to know portlet id's (napespace is portlet id with prefix=suffix=_)

javax.servlet.http.HttpServletRequest request = com.liferay.portal.util.PortalUtil.getOriginalServletRequest(com.liferay.portal.util.PortalUtil.getHttpServletRequest(p_request));
final String paramValue = request.getParameter(p_response.getNamespace() + "myparameter");

usage example: http://www.myserver.com/mypagewithportlets?_name_WAR_myportlet_INSTANCE_xzy1_myparameter=something1&_name_WAR_myportlet_INSTANCE_syhs_myparameter=somethnig2

Just a note
p_request implements javax.portlet.PortletRequest
p_response implements javax.portlet.PortletResponse

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文