天天看點

AEAI Portal-全動态Portlet配置

1. 概述

全動态Portlet,顧名思義,就是所有顯示的内容全是動态的,包括顯示樣式和資料,顯示的樣式通過Html模闆設定,而資料則可以有多種來源:常用的有ESB消息流程提供、通過Handler構造或通過門戶管理中靜态資料配置等。

2. 資料模闆配置

全動态模闆是html語言模闆,在模闆中定義資料顯示的方式、樣式等。相當于給資料穿了一件外衣。樣式可以根據需要靈活設定,如table表格、ul清單等。下面我給出一個全動态模闆樣例,進行詳細說明。

在門戶管理中進入資料模闆-->元件模闆:

​​

AEAI Portal-全動态Portlet配置

​​

新增一個模闆,輕按兩下彈出BOX,填入如下内容:

<#assign model = text?eval>

<divstyle="background:#960;">${model.name}</div>

<div>

<table width="100%"border="1">

  <#listmodel.datas as data>

  <tr>

   <td>${data.id}</td>

   <td>${data.title}</td>

  </tr>

 </#list> 

</table>

</div>

在上面的模闆中,assign指令用于為該模闆頁面建立或替換一個頂層變量,Text對象代表HTML表單中的文本輸入域,eval參數代表動态解析。

在配置了資料URL後,全動态Portlet對應的背景處理類會将得到的JSON資料放進model中,然後就可以周遊model中的資料了。

是freemarker的周遊指令,如果JSON的名稱/值對直接放在傳回的資料中,則直接從model中取,如上面的name;如果名稱/值對是放在JsonArray中,則需要通過#list指令周遊,上面的datas中放的就是JsonArray。是以要從datas中周遊。取值是通過EL表達式${XX.xx}取。

3.資料源構造

3.1.通過ESB消息流程提供

資料可以是通過資料庫查詢出來的,也可以是手動構造的。

如果資料來自資料庫,首先通過查詢節點查詢出所需資料,然後在JavaInvoker中構造json資料。通過循環,先将DataRow中的資料按字段名取出put進JsonObject中,再将JsonObject添加到JsonArray中,可以将JsonArray直接作為結果傳回,那麼資料就要從model中周遊;也可以将JsonArray放入JsonObject中再傳回,例如:jsonObject.put(“datas”,jsonArray);,上面的模闆對應的就是這種方式。

手動構造的資料轉換成JSON資料的方法跟上面相同,隻不過是資料來源不同罷了。

消息流程建立好後,部署,将消息流程的通路位址(如下圖)拷到全動态Portlet的資料URL中即可。

​​

AEAI Portal-全動态Portlet配置

​​

如果有傳入參數,需要提供參數的值。

3.2.通過資料構造handler提供

同樣可以通過查詢資料庫獲得資料,也可以通過資料構造類手動構造資料。

然後在handler中轉換資料為json格式,可以在一個方法中實作,然後在prepareDisplay中調用該方法,傳回結果。

在Portlet中調用該handler,将如下所示的路徑填入資料URL中即可:

​​ http://localhost:8080/portal_portlets/resource?StaffReportDataProvider&resourceType=Histogram&year=${year}​​

其中portal_portlets是所在應用名稱,StaffReportDataProvider是對應的資料構造handler的handlerId,後邊是需要傳的參數。

3.3通過門戶管理的靜态資料配置

進入資料模闆-->靜态資料: 

​​

AEAI Portal-全動态Portlet配置

​​

新增一個json靜态資料,輕按兩下彈出BOX中填入如下内容(json資料):

{"datas":[{"id":"25D8F5FF-E19F-4684-B668-94B7172DF636","text":"資料庫資源","url":"http:\/\/localhost:9090\/SMC\/index?DbResourceManageList","height":"500"},{"id":"4BF8A7B3-508B-4050-BDC8-5B54EE643123","text":"編碼類型","url":"http:\/\/localhost:9090\/SMC\/index?CodeTypeManageList","height":"500"}]}

關于json資料的格式在此不做贅述、讀者感興趣的話可以自己深入了解。

儲存後,點選編輯,将下圖中位址拷到Portlet的資料URL中即可:

​​

AEAI Portal-全動态Portlet配置

​​

4.Portlet配置

在門戶中建立一個包含全動态Portlet的頁面,例如:

​​

AEAI Portal-全動态Portlet配置

​​

​​

AEAI Portal-全動态Portlet配置

​​

“Tempate8JsonMergePortlet”就是全動态Portlet的編碼,到門戶中相應頁面配置Portlet,如下:

​​

AEAI Portal-全動态Portlet配置

​​

主要需要配置Html模闆和資料URL,将背景配置的模闆位址拷到Html模闆中,填入相應的資料路徑,即可顯示資料。預設是動态解析,無法解析資料中的Html标簽;靜态解析可以解析标簽,但是隻适用于一條資料的情況。其它内容可以根據需要選擇配置。

顯示效果如下:

​​

AEAI Portal-全動态Portlet配置

​​