首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

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

2012-12-26 
笨点子:根据不同分类生成多个Portlet实例???? 客户需求:客户有多个不同的分类,包括新闻,论坛,博客,微博,视

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

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

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

?

?

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

column Namecolumn KeyDataTypeididInteger监测项,如张三李四monitorIdInteger数据类型,新闻,论坛...dataTypeIntegerPortlet 实例化 windowId,唯一IdwindowIdInteger

????? 如上所述,基本的技术实现方式就是要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);}
?

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

热点排行