对于那些使用 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
这些是我们迄今为止找到的解决方案。
就我们实施的情况而言,它们都运行良好。
如果这会以某种方式帮助您,或者更确切地说是有用的,那意味着我们已经取得了一些良好的进展。
谢谢