gpt4 book ai didi

liferay - 如何根据 portlet 中的值在 liferay 主题中创建动态项目

转载 作者:行者123 更新时间:2023-12-02 16:44:18 26 4
gpt4 key购买 nike

我在 liferay 中有一个主题,其中侧面菜单中有一些项目,我想根据我在 portlet Controller 中获得的值动态地向菜单添加更多项目。

我的主题是这样的:

<div id="menu">
<ul class="link" style="height: 609px;">
<li><a href="$themeDisplay.getPortalURL()/x" id="x" class="active">My Account<i class="pull-right" ></i></a></li>
<li><a href="$themeDisplay.getPortalURL()/y" id="y" class="active">Settings<i class="pull-right" ></i></a></li>
</ul>
</div>

我有一个 portlet,我可以从其中获取列表中的一些值

List<String> list= new ArrayList<String>();
list.add("test1");
renderRequest.setAttribute("list", list);

列表可以有不同的值。

我想要的是,如果列表中有一个名为 test1 的参数,我想在主题中添加一个可供该特定用户使用的新参数。

<li><a href="$themeDisplay.getPortalURL()/z" id="z" class="active">Bonus<i class="pull-right" ></i></a></li>

如果是JSP,我会使用但是如何在liferay主题中完成它。(我正在使用velocity主题)。

最佳答案

在您的问题的评论中已经对此进行了很多讨论。您的主题无法访问“您的 portlet 的 Controller ”,这是思考问题的错误方法:如果 portlet 决定显示什么,您应该将该 portlet 嵌入到主题中。毕竟,您可能想与它交互,这是最简单的方法。

即使页面上存在一个 portlet,主题也不能任意使用任何 portlet 的请求属性 - 它们在设计上很好地屏蔽了彼此的访问:否则您将拥有所有流氓 portlet 和主题之间的各种冲突。

只要您不能保证 portlet 位于页面上,您就不能在 portlet 上调用任意方法。 (不是说你可以否则)。

如果您想在主题中实现此功能,请告别“portlet Controller ”。您应该将代码放在独立的实用程序类中,因为本例中的 portlet 不适合执行。

我没有完全理解您的完整用例,所以我无法告诉您哪种实现最有意义。只是您在问题中概述的组合对我来说最没有意义。

关于liferay - 如何根据 portlet 中的值在 liferay 主题中创建动态项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41973256/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com