# JSP关联文档组件

# 前言

JSP关联文档组件,是在JSP开发规范基础上实现的前后端附件互通的模块组件,只要按照JSP开发规范,正确引入common_header.jsp、common_footer.jsp,则可以调用本组件。

关联文档开发包括两种角色,调用者和内容开发者。调用者通过简单接口使用关联文档组件;内容开发者提供可关联的内容部分,需根据关联文档框架规范进行开发。

# 调用关联文档

关联文档调用分为下面几种方式:

  • 标准方式:即jsp页面中放入标签,通过加载jsp来生成相应内容。

  • js动态创建方式:对于页面不重新加载,而是通过js操作的需使用此方式。例如动态生成,每行都包含一个关联文档组件,需要通过js方法动态生成。

# 关联文档-标准方式

前端页面调用方法

调用过程包含下面两步:

<div class="div-float">关联文档:<span id="attachment2NumberDivposition1"></span></div> 
<div class="comp" comp="type:'assdoc',attachmentTrId:'position1', modids:'1'" attsdata='${ attachmentsJSON}'>
           <input type="button" onclick="quoteDocument('position1')" value="关联文档">
  • 关联文档数量的显示,id值的柜式为:固定部分(attachment2NumberDiv )+组件位置部分(即 attachmentTrId 属性值),例如:id="attachment2NumberDivposition1"
  • 添加关联文档显示区,即在需要显示关联文档的地方添加 type:'assdoc' 的组件
属性 说明 实例
type 指当前为关联文档组件,值为固定值 type:'assdoc'
attachmentTrId 如果一页包含多个关联文档,需要使用该属性指定当前组件的位置id attachmentTrId:'position1',
modids 应用id字符串为逗号(,)分隔,id值为全系统统一编号 modids:'1' 1 = Collaboration;2= Form;3 = Knowledge management ;4= Official document ;5 = Plan;6= Meeting;7= Bulletin;8 = News;9 = Discussion
attsdata 指原有的关联文档,如:业务模块的修改页面,或协同保存待发—新建等功能, 需要把原有的关联文档显示。 使用下面接口获取原有附件: /** 返回关联文档列表的json字符串* 为前端显示附件获取一个主题下的所有附件信息,包括二级主题, 如:协同的附件和协同回复的附件 / public String getAttListJSON(Long reference); attsdata='${ attachmentsJSON}'
callMethod 回调方法名。注意!方法名必须用引号括起来作为字符串。 callMethod:'testCallBack'
embedInput 需要在组件位置生成一个hidden input,id、name为 该属性值。不需要该input时不需要设置该属性。 embedInput:'field001'

打开关联文档窗口的接口,调用quoteDocument(poi) 打开关联文档窗口。

poi为组件的位置属性值

后端保存、获取

后端保存与获取和附件保存、获取方式相同。使用同一套接口可以一次保存附件和关联文档的数据,获取也是如此。即:如果当前提交既有附件又有关联文档,只需要调用一次保存接口。

# 关联文档-js动态创建方式

通过调用js方法:dymcCreateAssdoc()来实现。对于不需要的特性输入null即可。

/**
 * locationElementid, 位置id,放置关联组件的位置,比如div的id("dyncid"):<div id="dyncid"> </div>
 * attachmentTrId, 同一页多个关联组件的区分id
 * atts 关联文档数据
    */
    function dymcCreateAssdoc(locationElementid, attachmentTrId,modids,atts)

# 关联内容开发

主要包含下面步骤:

  1. 获取业务内容并展现
  2. 展现页面中要包含checkbox,并且checkbox的 onclick 响应事件中应调用接口:parent.quoteDocumentSelected(this, subject, ${applicationCategoryType.name}, id);同时需要提供一个js方法,用来取消选择。该方法名固定为deselectItem(fileUrl),方法主要是根据传进来的业务id值来取消选择。例如:
   function deselectItem(fileUrl){
       $("input[value='"+fileUrl+"']").attr("checked", false);
   }
  1. 注册关联内容到关联文档框架,让框架自动识别该部分内容

# quoteDocumentSelected 接口说明

接口说明:

/**
 * checkbox回调方法
 * obj, checkbox对象 this
 * subject, 标题
 * documentType, 应用类型
 * url,关联内容的id
    */
    function quoteDocumentSelected(obj, subject, documentType, url)


例如:quoteDocumentSelected(this, subject, ${applicationCategoryType.name}, id)

# 注册关联内容到框架

关联内容的请求url、应用编号等注册,在模块(插件)的spring中配置如下bean

    <bean id="test1" class="com.seeyon.ctp.common.assdoc.AssdocDefinition">
        <property name="appId" value="1" />
        <property name="url" value="http://www.baidu.com" />
    </bean>
  • 定义class="com.seeyon.ctp.common.assdoc.AssdocDefinition" 的bean

  • 设置应用编号属性,name="appId",value为如下的应用编号`

  1 = Collaboration

  2 = Form

  3 = Knowledge management

  4 = Official document

  5 = Plan

  6 = Meeting

  7 = Bulletin

  8 = News

  9 = Discussion
  • 设置该应用关联列表的url.
    编撰人:het