对于那些使用 Jboss 5.1.0 版和 GateIn 3.4 GA 版的人。
让我解释一下portlet 开发的一些亮点。首先,portlet 是一个独立的应用程序,或者我们可以说是wiki中提到的 Web 组件。可以用jsp/jsf构建,可以打包成war。
然而,GateIn 确实允许我们一次在页面上显示一个 portlet,但不能显示两个或更多,或者我们不知道该怎么做?
为此,我们必须在 GateIn 自己的代码中做一些变通方法和一些改进。您可以检查是否要在 xml 文件中使用 () 部分及其用途。当您从导航部分或菜单打开该 portlet 时,此标记允许加载“portlet”。
但是正如它所提到的,这个标签不允许加载另一个portlet。它只是删除旧的并放入新的。因此,如果当时我想查看两个以上的 portlet,或者如果我想将参数传递给该 portlet 并查看更改,甚至不关闭前一个是不可能的。
有两种解决方案,
1- 在 GateIn 的代码中你可以创建多个页面(或者可以在 xmls 中配置),这个页面可以有多个标签,但你需要知道只有一个页面主体将起作用,如果页面包含另一个page-body 标签,我们必须禁用其他页面正文标签。
页面主体标记可从 GateIn 的代码列表中访问,因此在此列表中,如果您要在父 portlet 下打开另一个 portlet,这意味着您必须启用该父 portlet 页面主体标记。每当您导航到另一个被视为父 portlet 的 portlet 时,先前的 portlet 将从上下文中删除,并且这个新的父 portlet 将使用默认页面主体标记加载到上下文中。
示例:假设我们有 2 个父 portlet -User -Domain
假设我们有 2 个其他 portlet 需要在页面中作为第二个 portlet 打开,而无需关闭用户或域 portlet。
-a page contains page body{
user portlet with disabled page body tag{
open sub-portlet-a with data X, (a button or a link)
open sub-portlet-b with data Y (a button or a link)
}
}
每当您在用户 portlet 中执行操作以打开带有“PASSED DATA”的子 portlet 到第二个子 portlet 时,我们会在第二个 portlet 的代码中启用用户 portlet page-body 标记,该代码带有“PASSED-DATA” ",将被打开。
Switch to Domain portlet-> user portlet will be gone,并且同样的步骤也将应用于域 portlet。请考虑这仅适用于在 xml 文件中使用相同的子 portlet 设置域和用户 portlet 的情况。
<!--portlet definitions-->
<user>
<!--some user specific information goes here-->
<a></a> (optional)
<b></b> (optional)
</user>
<domain>
<!--some Domain specific information goes here-->
<a></a> (optional)
<b></b> (optional)
</domain>
正如我们所提到的,有两种方法可以在页面中打开第二个 portlet。
这是第二个。
2- 这个问题的第二个解决方案与门的代码无关,或者你不必接触那个区域。
它与 GateIn portlet 定义附带的 groovy 模板一起使用。
.gtmpl模板文件。此文件可以访问其创建者。我的意思是,一些容器已经可以通过这些 .gtmpl 模板文件访问。
例如,您可以使用此模板文件中的UITableColumnContainer.gtmpl文件和UIContainer对象。该对象将根据您的 portlet 为您提供上下文。这意味着您可以在此文件中获取其他 portlet。
所以从现在开始,我认为我们可以在 groovy 模板文件中获取其他 portlet。
在这种情况下,如果我想在单击按钮后打开一个 portlet 或执行操作以打开我的 Portal 结构中的第二个 portlet,我可以呈现它。
其他 portlet 呈现为默认值(设置为 false)从现在开始,w 可以从 URL 或您自己的实现中获取有关我们要打开的 portlet 的信息,然后我们可以将该 Portlet 设置为呈现为 True
这些是我们迄今为止找到的解决方案。
就我们实施的情况而言,它们都运行良好。
如果这会以某种方式帮助您,或者更确切地说是有用的,那意味着我们已经取得了一些良好的进展。
谢谢