最近项目使用WCM作为portal的后台发布系统,前台数据展示集成考虑了2种方式:一种是在wcm中创建菜单,前台使用web内容管理器配置;二是使用wcm api 获取数据展示。
先是使用了创建菜单的方式,但是发现有如下几个问题没有解决:一是样式问题,样式不好控制,而且有时候数据还出不来,我水平比较菜,都是在摸索前进,觉得
把时间花在这上面风险太大,而且不利于前台维护,每复制一个web内容管理器都要到页面上进行配置一次,也就是说如果想一个portlet多个页面复用或
者换一个页面那就重新需要配置一次。
所以改为使用了wcm
api的方式。研究发现,wcm
api里可以做所有的事情。当然,先从前台展示开始。通过api先获取到已发布(流程节点,也可以根据此处获取待审核,草稿等其他节点信息)的内容,然后
再根据站点区域(由于我的设计是一个流程多个站点区域使用)获取数据进行封装,传回前台展示。
我的封装数据格式是:["zhandian1":{数据1},"zhandian2":{数据2}......],这样在每个前台页面根据不同的站点获取不同的数据
代码如下:
1、连接到WCM
static PropertiesConfig con = new PropertiesConfig();
private static Workspace workspace;
private static String libraryName=con.getProperties("library_name");//库名称
private static String publishCode=con.getProperties("publish_code");//已发布节点名称
static{
try {
workspace = WCM_API.getRepository().getSystemWorkspace();
} catch (ServiceNotAvailableException e) {
System.out.println("获取workspace失败:服务不可用!!");
e.printStackTrace();
} catch (OperationFailedException e) {
System.out.println("获取workspace失败:操作失败!!");
e.printStackTrace();
}
workspace.setCurrentDocumentLibrary(workspace.getDocumentLibrary(libraryName));
}
2、返回发布节点
/**
* 取得发布阶段,并且给以数组的方式返回。
*/
private static DocumentId[] getWorkFlowStageByPublic(){
DocumentIdIterator workFlowStageIdIterator = workspace.findByName(DocumentTypes.WorkflowStage,publishCode);
DocumentId[] ids = new DocumentId[1];
ids[0] = workFlowStageIdIterator.nextId();
return ids;
}
3、获取所有已发布信息
/**
* 返回已发布信息。
* @return DocumentId
*/
private static List<DocumentId> getPublicContent(){
DocumentId[] workflowStgeId = getWorkFlowStageByPublic();
DocumentIdIterator contentIdIterator = null;
List<DocumentId> contentList = new ArrayList<DocumentId>();
try {
contentIdIterator = workspace.findContentByWorkflowStage(workflowStgeId);
} catch (IllegalDocumentTypeException e) {
e.printStackTrace();
}
while(contentIdIterator.hasNext()){
contentList.add(contentIdIterator.nextId());
}
return contentList;
}
4、获取所有的栏目以及文章所处站点区域
/**
* 取出文章所在的栏目
* @param ids
* @return
*/
private static SiteArea getSiteAndSiteArea(DocumentIdIterator ids){
SiteArea doc = null;
if(ids.hasNext()){
try {
doc = (SiteArea)workspace.getById(ids.nextId());
} catch (DocumentRetrievalException e) {
e.printStackTrace();
} catch (AuthorizationException e) {
e.printStackTrace();
}
}
return doc;
}
/**
* 取出所有的栏目
* @param ids
* @return
*/
@SuppressWarnings("deprecation")
private static Map<String, ArrayList<Content>> getSiteAreaS(){
DocumentIdIterator siteAreas = workspace.findByType(DocumentTypes.SiteArea);
Map<String, ArrayList<Content>> map = null;
int count = siteAreas.getCount();
if(count>0){
map = new HashMap<String, ArrayList<Content>>();
while(siteAreas.hasNext()){
DocumentId s = siteAreas.nextId();
map.put(s.getName(), new ArrayList<Content>());
}
}
return map;
}
5、组装数据
(略)
6、前台获取数据
<%@page session="false" contentType="text/html" pageEncoding="GB18030" import="java.util.*,javax.portlet.*" %>
<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet"%>
<portlet:defineObjects/>
<%
PortletPreferences ref = renderRequest.getPreferences();
String moreUrl = ref.getValue("moreUrl","");
String json = (String)renderRequest.getAttribute("json");
%>
<script type="text/javascript">
var data=eval(<%=json%>);
nl.data=data;
</script>
7、展示页面获取展示
<script type="text/javascript">
$(document).ready(function() {
var d = nl.data["<%=key%>"]
console.info(nl.data);
$("#<portlet:namespace/>div").portalui_showLine({
data:d,
moreUrl:nl.moreUrlPath+"<%=moreUrl%>",
size:<%=size%>
});
});
</script>
同时,感谢网友天山来客的大力技术支持,是他为我指明了方向
分享到:
相关推荐
**IBM Web Content Manager (WCM) API for Portal 6.1** 在IBM的Web Content Manager (WCM) 6.1版本中,开发者可以利用其提供的API进行二次开发,以扩展和定制化内容管理功能。这个API是面向Java的,主要用于与WCM...
PORTAL WCM(Web Content Management)是一种用于管理和发布网站内容的技术,它为组织提供了高效、灵活且用户友好的工具来创建、编辑、存储和发布网页内容。WCM系统通常包括内容创作、审核、版本控制、权限管理以及...
### IBM WebSphere Portal WCM 开发详尽指南 #### 一、引言 IBM WebSphere Portal 是一个功能强大的企业级门户平台,它为企业提供了一个集中的位置来管理和发布各种类型的信息和服务。其中,Web Content ...
Web Content Manager (WCM) 是WebSphere Portal的一个组件,用于创建、管理和发布数字内容。本实验室将指导你如何配置搜索功能,以便在IWWCM(集成WebSphere Web Content Manager)站点结构中查找内容。 **目标与...
在TRS WCM中,发布管理系统提供了多种功能,包括内容发布、内容审核、内容撤销等。 发布管理的重要性在于,它可以帮助开发者快速发布网站内容,从而提高网站的整体性能和可维护性。 TRS WCM开发教程旨在帮助开发者...
TRS WCM,全称为TRS Web Content Manager,是一款由北京拓尔思信息技术股份有限公司开发的企业级内容管理系统。它主要用于帮助企业管理和发布各类数字内容,包括网页、文档、图片等,支持多渠道、多语言的内容发布,...
在IT领域,特别是企业级应用开发与管理中,IBM WebSphere Portal与IBM Workplace Web Content Management(WCM)的结合提供了一种强大而灵活的方式,用于创建、管理和发布内容至门户环境。本文将深入探讨如何利用IBM...
最后,为了在WebSphere Portal中展示已发布的新闻内容,需要安装并配置相应的Portlets。这通常涉及选择合适的Portlet类型,设置显示参数,以及调整Portlet的行为和外观。一旦配置完成,用户即可在Portal环境中查看和...
在实际开发中,开发者需要理解TRS WCM的核心概念,如对象模型、工作流、权限管理等,并熟练掌握开发工具和编程技巧,才能高效地开发和维护基于TRS WCM的应用。同时,良好的文档和注释也是项目成功的关键,它们有助于...
根据提供的文件信息,我们可以整理出以下关于Portal开发学习的技术要求,这些内容对于希望从事或提升在Portal开发领域技能的学习者非常有用。 ### Portal开发基础知识 #### 1. Java 应用开发基础 - **Java**: Java...
基于TRS WCM6.5的二次开发文档,包括 WCM6.5二次开发-001-基础知识.doc WCM6.5二次开发-013-基本组件说明.doc WCM6.5二次开发-021-wcm6服务说明文档.doc 等
在WCM(Web Content Management)系统中创建基于Web2.0的内容发布,是现代网站建设和运营的重要组成部分。Web2.0的理念强调用户参与、互动和分享,这些特性为内容管理带来了全新的挑战和机遇。本篇将围绕这个主题,...
wcm-6-0-api-javadoc.zip 为IBM WCM 601X版本的基本JAVA DOC
### WCM 开发与管理知识点解析 #### 一、WCM基本操作 ##### 1.1 启用WCM **任务内容概述**: - **编写portlet配置**: 该任务会自动创建IBM Workplace Web Content Management (WCM) 页面,并安装编写portlet和本地...
笔记还提到了具体的项目案例——河湾咖啡店,以及WCM部分应用代码和API的使用经验。此外,还讨论了Java、WebSphere Portal V6主题和外表的开发,以及数据库、Linux、Oracle等相关技术知识。 总的来说,这篇笔记是...
工作流是WCM系统中不可或缺的一部分,它允许用户定义、自动化和跟踪业务过程,如内容审核、发布和审批流程。 在TRS WCM8.1中,工作流与HTML5的结合意味着系统提供了更现代、更友好的用户体验。HTML5作为最新的超...
3. **内容管理**:TRS WCM 5.2提供了一套完善的内容生命周期管理机制,包括内容创作、审核、发布、存储和归档等环节。理解这些流程对于确保信息的准确性和时效性至关重要。 4. **政府门户网站应用**:政府网站对...
"WCM Infocenter" 是一款专门为企业提供信息管理和发布服务的平台,主要针对Web内容管理(Web Content Management)领域。这个英文版的 Infocenter 提供了关于 WCM 系统的详细文档、用户指南、操作手册以及技术支持...
TRS WCM,全称为TRS Web Content Manager,是一款强大的企业级内容管理系统,用于高效地管理和发布组织内部或对外的网络内容。本使用手册包含了从安装、管理到实际操作的全面指导,旨在帮助用户深入理解和有效利用该...
WCM 是一种用于管理网站内容的强大工具,尤其在IBM WebSphere Portal V6.0版本中得到了显著增强。通过学习本教程,读者将能够掌握如何创建、管理和编辑端到端的Web内容,并了解如何利用Web Content Management 的新...