`

笨点子:根据不同分类生成多个Portlet实例

阅读更多

     客户需求:客户有多个不同的分类,包括新闻,论坛,博客,微博,视频,报刊,来自同一个数据源。
     客户想要的功能,完成一个portlet的开发,可以预先设置不同的分类项,而表现出不同的输出结果。
     需求延伸:二维度的分类需求,比如针对张三的新闻,李四的论坛等等。如下所示:

监测项 新闻 论坛 博客 微博 视频 报刊
张三
李四
...

 

 

      开发设计:在对应的数据库设计表:PortletMapping

column Name column Key DataType
id id Integer
监测项,如张三李四 monitorId Integer
数据类型,新闻,论坛... dataType Integer
Portlet 实例化 windowId,唯一Id windowId Integer

      如上所述,基本的技术实现方式就是要portlet根据不同的getWindowID生成不同的绑定分项。

 

 

技术实现代码,portlet.xml当中加入:

<portlet>
		<portlet-name>testPorlect</portlet-name>
		<portlet-class>com.antbee.base.TestPortlet</portlet-class>
		<expiration-cache>1000</expiration-cache>
		<cache-scope>private</cache-scope>
		<supports>
			<mime-type>text/html</mime-type>
			<portlet-mode>view</portlet-mode>
			<portlet-mode>edit</portlet-mode>						
		</supports>
		<resource-bundle>content.Language-ext</resource-bundle>
		<portlet-info>
			<title>ohh,This is a test only.</title>
		</portlet-info>
	</portlet>

 实现方式TestPortlet.java,Action片段:

@ProcessAction(name = "markForWindowAction")
	public void bindWindowId(ActionRequest request, ActionResponse response) throws PortletException, IOException {		
		String monitorItem = request.getParameter("monitorItem");
		String dataType = request.getParameter("dataType");		
		String windowId = request.getWindowID();
		 //此处代码省略,基本思路
                //根据windowId,检查对应的表当中有没有数据
               //如果有数据,重新绑定monitorItem和dataType,
               //如果没有数据,就生成一个新的记录,绑定monitorItem,dataType,windowId.
              //保存更新记录
response.encodeURL(Constants.PATH_TO_JSP_CONCERNEDDOCS_PAGE + Constants.EDIT_PAGE)).include(
					request, response);
		}
	}

 实现方式TestPortlet.java,doView片段:

@RenderMode(name = "VIEW")
	public void view(RenderRequest request, RenderResponse response) throws PortletException, IOException {		
		String windowId = request.getWindowID();
		//同样代码省略,基本思路如下:
               //根据windowId,取得绑定的数据
              //如果没有绑定数据,则输出提示。
              //如果有绑定数据,则根据绑定数据从数据库取出要展示的数据。
             //输出展示数据或者提示。
		getPortletContext().getRequestDispatcher(
				response.encodeURL(Constants.PATH_TO_JSP_CONCERNEDDOCS_PAGE + Constants.HOME_PAGE)).include(request,
				response);
	}
 

   当然了,这是一个比较笨的方法,大家有没有更好的办法了呀?

分享到:
评论

相关推荐

    简单的portlet实例

    简单的portlet实例,基于pluto

    pluto+portlet实例

    不会让你失望的实例,我研究了1周才弄明白,里面内置pluto2.0.3 + portlet项目 使用于pluto 和 portlet的初学者 。 往eclipse里面配置的时候一定要按照里面图片那样配置一下。

    workflow portlet实例

    综上所述,构建一个基于JSR168的workflow portlet需要对portlet生命周期、MVC模式、工作流引擎、portlet通信以及安全性等多个方面有深入理解。通过不断学习和实践,开发者可以创建出高效、易用且适应企业需求的...

    portlet之开发详解(中文)

    生命周期的不同阶段有不同的接口,例如Portlet实例可以在多个请求之间保持活动状态。 - **Portlet实例数量**:开发者需要决定Portlet实例的数量,这直接影响到Portlet的性能和资源使用。 - **个性化**:Portlet提供了...

    Portlet实例代码

    在“Portlet实例代码”中,我们可能找到的是一个简单的Portlet开发示例。这个示例可能是用Java语言编写的,因为Java是Portlet开发的标准语言,基于JSR 286(portlet 2.0 API)或JSR 168(portlet 1.0 API)。下面将...

    Spring Portlet MVC的实例 eclispe project

    Eclipse是一款广泛使用的Java集成开发环境(IDE),在这里,我们有一个名为"Spring Portlet MVC的实例 eclispe project"的压缩包,其中包含了使用Eclipse创建的Spring Portlet MVC示例项目。 Portlets是Web应用程序...

    Portlet

    - **portlet实例**:portlet容器根据需要创建的portlet类的实例,每个portlet实例对应门户中的一个portlet显示区域。 - **portlet配置**:定义portlet的元数据,如portlet名称、描述、显示模式、首选项等。 - **...

    portlet 开发

    Portlet标准旨在促进不同厂商门户服务器之间的互操作性,确保portlet可以在多种环境中无缝运行。 通过深入学习和实践这些知识点,开发者可以创建高效、灵活且适应性强的portlet,丰富企业门户的功能,满足用户多样...

    JSR 286 Portlet 的新特性,第 3 部分: Portlet 过滤器和 Portlet 窗口

    2. **窗口ID**:每个portlet窗口都有唯一的ID,这使得portlet可以在多个实例之间区分,同时为个性化和通信提供了便利。 3. **窗口属性**:开发者可以通过`PortletSession`对象设置和获取窗口属性,实现portlet间的...

    Portlet核心API

    这意味着,一个portlet可以以不同的配置参数运行,而不需要创建多个Portlet类实例。具体Portlet可以被多个用户共享,且在整个portlet生命周期中,可以根据需要创建和销毁多个实例。 具体Portlet实例是在用户界面中...

    portlet入门介绍

    4. 配置portlet:在portlet.xml文件中定义portlet的元数据,如portlet名称、描述、参数等。 5. 测试和调试:在开发环境中部署portlet,通过门户服务器的管理界面添加portlet到门户页面,进行功能测试和界面调整。 ...

    liferay portlet 开发实例

    这个构建过程会根据`service.xml`生成相应的Java源代码和Hibernate配置,从而实现对数据库的自动映射和操作。执行`build-service-portlet-users`目标后,会在`ext-impl\src\com\ext\portlet\users`和`ext-service\...

    portlet开发手册

    - 用户可以根据需要定制portlet的参数,这些偏好可以存储在portlet-preferences中,允许portlet动态地适应用户需求。 6. **portlet的MIME类型和portlet模式**: - MIME类型定义了portlet可以处理的数据类型,而...

    portlet学习资料

    1. **创建portlet项目**:使用IBM的开发工具创建一个新的portlet项目,并配置portlet.xml文件。 2. **实现portlet接口**:根据需求选择实现Portlet、GenericPortlet或EventPortlet等接口。 3. **编写portlet逻辑**:...

    liferay_portlet对象详解

    在 Liferay 的 Portal 页面中,多个 Portlet 共存,但用户每次只能与一个 Portlet 进行交互。JSR168 规范定义了两种主要的 Portlet 请求类型:Action 请求和 Render 请求。Action 请求用于处理用户提交的数据,如...

    jetspeed 的几个portlet

    "sample"文件可能包含一系列portlet开发的实例,涵盖了不同功能和复杂度,帮助开发者理解和实践portlet开发。 总的来说,学习和掌握JSR168 portlet开发,对于希望将产品集成到多门户环境中的公司来说至关重要。...

    portlet

    portlet是Web应用程序中的一个组件,它允许用户在门户页面上个性化和交互地访问信息和服务。Portlet技术主要应用于企业级的门户系统,如IBM WebSphere Portal、Liferay Portal等,为用户提供了一种集中管理和展示...

    Portlet HelloWorld Pluto2 工程代码

    Portlet与传统的Web应用不同,它并不处理整个页面,而是与多个其他Portlets一起协作构建一个完整的Web页面。每个Portlet有自己的生命周期,包括初始化、渲染、事件处理和动作请求等阶段。在"HelloWorld"工程中,我们...

Global site tag (gtag.js) - Google Analytics