在一个Portlet中链接到另一个Portlet
这个问题,应该是大部分网站开发人员都希望能解决的问题。典型应用情况:两栏布局,左边是一些链接,右边有一个内容呈现框。当用户点击左边的链接的时候,希望在右边的内容框中显示内容。
在Portal中,一般我们都会把左右做成不同的Portlet。而Portal似乎没有提供直接的方法,能够链接到其他Portlet,通常都是在当前Portlet进行显示。
6.1 Portal的URL格式分析
在一个Portal页面中,Url的格式如何,它是如何将参数传给某一个Portlet的。了解了这些,对解决这个问题应该有所帮助。
这是一个BBS的Url的例子。
http://localhost:8080/c/portal/layout?p_l_id=PRI.15.2&p_p_id=19&p_p_action=0&p_p_state=maximized&p_p_mode=view&p_p_col_id=column-2&p_p_col_pos=0&p_p_col_count=1&_19_struts_action=%2Fmessage_boards%2Fview&_19_categoryId=1
从这个URL分析来看,主要有以下几个参数
p_p_id=19 这个主要是描述当前是在操作哪个Portlet
_19_struts_action=%2Fmessage_boards%2Fview
_19_categoryId=1 这两个是需要传递给Portlet的参数。
如果我们能修改这几个参数,比如,将19换成其他Portlet,应该就可以实现链接到另一个Portlet。
一种做法,是将renderResponse. createRenderURL().toString()进行替换,将其中的portletName换成目标Portlet的portletName。方法应该是可行的,但有点麻烦。尝试找找有没有更好的方法。
6.2 源代码分析
还是从源代码入手,看看Liferay自己是如何处理的。
renderResponse的实现类是com.liferay.portlet.RenderResponseImpl。
public PortletURL createRenderURL() {
return createRenderURL(_portletName);
}
public PortletURL createRenderURL(String portletName) {
…
return portletURL;
}
有希望,我们直接调用createRenderURL(String portletName),将Portlet的名字作为参数传入,应该就可以实现这个目的了。
但是RenderResponse接口并没有createRenderURL(String portletName)这个方法,只能做一下强制转换
PortletURL rowUrl =((com.liferay.portlet.RenderResponseImpl)renderResponse).
createRenderURL(portletName);
rowUrl.setParameter("categoryId", String.valueOf(19));
编写了一点测试代码,对此进行了测试。呵呵,搞定。
6.3 几个实现细节
Portlet有两种类型,是否可实例化。前述的例子,是不可实例化的Portlet,因此只需要使用其Portlet名字19即可。那对于可以实例化的Portlet呢?经过测试发现,需要把其实例化后的名字作为参数传入。
比如一个可实例化的Portlet的名字是56_INSTANCE_95uY。表示其Portlet的名字为56,实例化之后的名字是56_INSTANCE_95uY。把这个名字作为参数传入,即可达到目的。
另一个问题,我们如何将portletName传递给Portlet,让它根据这个参数生成URL?一种做法就是编写Portlet的PortletPreference,在里面保存这个参数名。这样,在不同的页面,我们都可以很方便的实现我们需要的功能。
分享到:
相关推荐
- **新增、重命名用户组**:根据需要创建新的用户组或更改现有用户组的名称。 - **修改用户组**:调整用户组的成员或权限。 - **定义角色**:角色代表了一组权限的集合,可以赋予用户或用户组。 - **新增、重命名...
例如,对于简单的页面样式修改,可以选择主题定制;而对于复杂的功能扩展,则可能需要使用Hook或Ext插件。 #### 四、Plugins SDK 设置 为了更好地进行Liferay的开发工作,开发者需要正确配置Plugins SDK。这包括:...
- **覆盖Language.properties文件**:说明了如何更改Liferay的国际化字符串。 #### 六、Ext-plugins 第六章介绍了如何利用Ext-plugins来扩展Liferay的功能。 - **创建Ext-plugin**:指导如何创建一个基本的Ext-...
包括 defineObjects 标签、renderURL 标签、actionURL 标签、param 标签和 namespace 标签等。 Portal 的对象 Portal 的对象包括 Request 对象、Response 对象、PortletConfig 对象、Session 对象和 Preference ...
- **集成 Liferay**:在 Liferay 中配置 CAS 作为认证提供者,这可能涉及修改 Liferay 的 `portal-ext.properties` 文件,添加 CAS 服务器的相关配置,比如 CAS 服务器的 URL、服务验证 URL 等。 - **测试集成**:...
如果需要将Liferay的默认端口8080改为80,打开`D:\liferay-portal-tomcat-6.1.1\tomcat-7.0.27\conf\server.xml`文件,找到`<Connector>`标签,将`port="8080"`更改为`port="80"`,保存并重新启动Tomcat。...
例如,如果type_设置为URL,可以将其他系统内容嵌入到Liferay Portal中。 6. typeSettings:存储页面布局模板信息。Liferay Portal支持多种页面布局模板,typeSettings指明了当前页面使用哪一个模板,如一栏、两栏...
Liferay Portal 数据库介绍 Liferay Portal 数据库是指Liferay Portal系统中存储的所有数据,包括用户信息、组织...以上是Liferay Portal 数据库介绍的相关知识点,包括Layout 表的字段、页面布局的修改和查询语句等。
其中,Embedded和URL类型允许整合外部系统资源至Liferay平台,增强其灵活性和扩展性。 6. **typeSettings**:这一字段尤为关键,不仅指定页面模板(如一栏、两栏布局),还记录了页面中Portlets的配置信息,包括...
开发者可以通过分析和修改这些示例来学习和实践Liferay Portlet开发。 以上知识点涵盖了Liferay Portlet开发的基础和关键点,通过深入研究和实践提供的"samples",开发者可以逐步掌握创建功能丰富的Liferay Portlet...
2. **修改`portal.properties`文件**:打开`E:\liferay-portal-6.0.5\tomcat-6.0.26\webapps\ROOT\WEB-INF\lib\portal-impl.jar`中的`portal.properties`文件,将默认的HSQLDB数据库配置更改为Oracle数据库配置。...
同时,通过调试和修改代码,加深对Liferay Portal开发流程的理解。这些实例不仅有助于提升你的编程技能,还能让你熟悉Liferay的生态系统,包括其API、服务、工具和最佳实践。在实践中,你还可以尝试将这些实例与其他...
如果你想让JAR包在部署后直接出现在Liferay的Tomcat目录下,可以修改工作区的`gradle.properties`文件,添加属性`liferay.workspace.home.dir`指向Liferay安装目录。 2. **Service Builder使用** - 创建一个新的...
- **定制外观和感觉: Themes**: Themes允许开发者更改Liferay门户的外观,例如修改布局、颜色方案等。 - **添加预定义页面布局: Layout Templates**: Layout Templates可以帮助快速设置页面结构和样式,提高开发效率...
- **url**:URL地址,书签指向的网页地址。 - **comments**:评论,关于该书签的一些注释或描述。 - **visits**:访问次数,记录该书签被访问的次数。 - **priority**:优先级,可能是指该书签的重要程度。 ##### 7...
这时,你需要更改这些文件的编码格式为UTF-8。 接下来,为了构建和运行Liferay,你需要配置Ant。在Eclipse的Ant视图中,将`build.xml`拖入,以便使用Ant任务进行构建。在工程目录中,复制`app.server.properties`...
- EDIT:编辑模式,允许用户修改 Portlet 的配置或设置。 - HELP:帮助模式,显示与 Portlet 功能相关的帮助信息。 开发者可以根据需求扩展这些模式,创建自定义的 Portlet 模式。 3. 窗口状态(Window States)...
Liferay Portal是一款强大的开源企业级门户平台,它提供了一个灵活的框架,用于构建和管理复杂的Web应用程序。在Liferay中,用户体验是根据用户的身份和权限动态定制的。默认情况下,Liferay只有一个系统管理员用户...