讓Java程序員工程師,帶你使用MVC框架和API開發網站,從此不再難

前言

Oracle WebCenter站點提供了用於開發服務器端網站的模型視圖控制器(MVC)框架和Java API,以及用於構建在客戶端上呈現的網站的REST API。藉助這些技術,您可以開發靈活且可擴展的網站。

主題:

  • 服務器端和客戶端開發方法
  • 服務器端MVC框架
  • 頁面,Pagelet和元素
  • 模板和CSElement資產
  • 頁面資產和網站導航
  • 基於日期的預覽
  • 多語種支持
  • MVC框架中的緩存
  • 服務器端Java API
  • REST API
  • 樣本網站

服務器端和客戶端開發方法

Oracle WebCenter網站提供了用於構建網頁上的服務器端內容呈現,客戶端呈現或兩者結合的工具。每種方法都具有獨特的優勢,具體取決於您的網站設計和要呈現的內容。兩種方法都可以使您以易於使用,標準化和合規的方式對網站進行原型開發和開發,以實現快速,高效的開發。

  • 在服務器端的模型-視圖-控制器(MVC)框架乾淨地從業務邏輯分離開來,以支持強大的服務器端腳本。Java開發人員可以Controller使用Groovy 編寫業務邏輯代碼並用TemplatesJSP 編寫,而Web開發人員可以使用HTML和JavaScript在視圖中創建表示元素,而不會互相干擾。該MVC框架與WebCenter網站緩存,資產依存關係和生命週期管理功能完全集成在一起。為了簡化編碼,該框架包括簡化的服務器端Java API。開箱即用的Java API為構建網站中的常見活動提供了方便的接口,例如以下任務:讀取資產數據繪製頁面的麵包屑訪問表單值執行驗證將Controller用作REST端點請參閱服務器端Java API。注意:Java API與MVC框架結合使用,替換了WebCenter Sites JSP標籤技術的元素和模板,如使用Tag Technologies的網站開發中所述。但是,仍然支持WebCenter Sites標籤。
  • REST API使您可以使用完全在瀏覽器客戶端中執行的技術來構建在客戶端呈現的網站。此類網站包括但不限於單頁應用程序。WebCenter Sites安裝下載中隨附了一個獨立的示例網站,該網站演示了WebCenter Sites REST API功能。請參閱目錄中有關如何配置此示例參考實現的說明。 wcsites客戶端網站上的渲染對於高度交互的應用程序(或網站的一部分)和移動網站特別有用。通常,客戶端渲染將標記生成委託給客戶端庫,同時將客戶端和服務器之間的交互限制為僅數據元素,通常採用JSON(JavaScript對象表示法)的形式。當用戶在這樣的網站中從一個頁面瀏覽到另一個頁面時,會向服務器請求特定的數據組件,而用於生成標記的JavaScript會保持加載在瀏覽器中。REST API以JSON格式有效地將數據組件獲取到客戶端。這些API通常反映服務器端Java API的功能。更重要的是,這些服務還具有其他功能,例如聚合功能,可滿足客戶端渲染的特殊需求。REST API解決了常見的使用模式,例如:訪問導航數據訪問彙總資產數據例如,API可以排除某些字段,使用通配符或構建列表。根據您網站訪問者的需求,您可以決定完全使用服務器端還是客戶端方法來構建它。或者,您可能會選擇同時使用兩種技術。在服務器端呈現的頁面的參與者可以使用Oracle WebCenter站點:參與者界面在Web模式下進行組合,但是在客戶端呈現的頁面元素無法進行網絡模式編輯。請參閱REST API。

服務器端MVC框架

MVC設計模式涉及模型,視圖和的分離Controller。模型表示數據,視圖表示表示形式,並將Controller模型和視圖鏈接在一起。清晰的分隔使代碼易於閱讀且易於修改,並且易於適應技術變化。

  • 該模型表示數據。在“ WebCenter網站”中,模型是鍵值對的映射。資產數據以及業務邏輯中確定的任何數據都將是模型的一部分。
  • 該視圖表示演示文稿。在“ WebCenter網站”中,視圖是呈現給瀏覽器的Template或SiteEntry對象。該視圖不包含任何業務邏輯,並且在界面中呈現模型數據,以供用戶查看和修改數據。還將用戶操作(例如訪問者點擊)發送到Controller。
  • 該Controller鏈接的模型和視圖。對基礎數據執行業務邏輯Controller,以一種可以在視圖中使用的方式將模型組合在一起。在“ WebCenter站點”中,a Controller是標準資產實例。展示資產(Template或SiteEntry資產類型)可以鏈接到Controller。該鏈接是可選的。如果存在,則WebCenter站點將Controller在調用視圖之前調用鏈接。與任何資產類型一樣,Controller可以批准和發佈類型的資產。Controllers可以擴展和導入其他Controllers。A BaseController提供了方便的訪問器,調試等。此外,Controller如服務器端Java API中所述,您可以在中使用Java API。有關將Controller用作REST端點的信息,請轉到開發人員的示例網站,然後從“
    高級主題”菜單中選擇“ REST端點 ” 。

注意:

如果視圖(Template或SiteEntry資產)未與關聯Controller,則WebCenter Sites會將其視為獨立視圖。這樣的視圖可以追溯到使用資產API:教程中描述的基於Web視圖站點的基於舊視圖的呈現。WebCenter站點保持完全向後兼容,從而使您可以選擇逐步過渡到MVC框架。

注意:

如果a Controller擴展並導入另一個Controller,Controller則Controller默認情況下,對擴展的編輯不會使擴展的緩存無效。要使擴展的緩存無效Controller,或者Controllers通過ControllerAdmin界面編輯並保存每個擴展,或者使用系統工具中的Controller Asset Utility強制編譯所有依賴項Controllers。

以下主題描述了服務器端MVC框架的各個部分:

  • 開發人員的樣本網站
  • WebCenter站點MVC框架概述
  • 控制器
  • 觀看次數

開發人員的樣本網站

開發人員樣本網站概述了新的MVC框架,入門示例,服務器端Java API示例以及高級主題,例如註釋,選擇語法,自定義Bean,表單驗證,REST端點,片段和監視程序。

該參考網站基於“貢獻者”界面中的“示例站點”。

要訪問開發人員的示例網站,請輸入以下URL,以及安裝的主機名和端口號:

<code>http://hostname:port/sites/samples/overview/<code>

WebCenter站點MVC框架概述

此圖顯示了通過MVC框架生成響應時請求的剖析。

圖13-1服務器端渲染的MVC框架過程

讓Java程序員工程師,帶你使用MVC框架和API開發網站,從此不再難


“圖13-1服務器端渲染的MVC框架過程”的描述

在WebCenter站點中,MVC框架包括一個前端Controller。Oracle WebCenter Content Server或Satellite服務器Servlet充當前臺,Controller並處理各種調度和緩存服務。

當來自客戶端的請求到達前臺時Controller,它將根據請求URL 解析Controller與Template包含請求邏輯的實際實例相關聯的實際實例。前端Controller通過首先定位view元素(例如,Template資產),然後查找Controller與該視圖關聯的實例(如果Template鏈接到Controller)來實現此目的。

在發現Controller包含頁面業務邏輯的實例後,前端將Controller執行該實例。執行a的結果Controller是創建模型實例。

然後,前端Controller將模型實例放置在請求範圍內,將請求分發到視圖。視圖(一個JSP)現在可以使用JSTL標記訪問模型實例,並將其作為響應返回給瀏覽器。

對於小頁面(網頁的一部分)重複相同的過程。具有其Controller對象的Pagelet 成為可重用的組件,可以在許多頁面之間重用。

除了管理您的內容外,WebCenter網站還為您處理許多有用的任務,例如在WebCenter Sites緩存中存儲網頁和小頁面並維護這些緩存,以使您的網站訪問者永遠不會看到過時的頁面。您可以使用WebCenter Sites Java方法來執行此操作。

各種元素資產和Template資產組成一個“ WebCenter站點”頁面。元素資產包括一些代碼塊,這些代碼塊可以從WebCenter Sites數據庫檢索頁面的內容或執行其他任務,例如從數據庫中刪除過時的項目。Template資源通常用於格式化網頁的內容。元素Templates可以用JSP編寫。

控制器

Controllers在開發人員編寫的代碼中包含業務邏輯。編程語言的書面這樣的代碼的WebCenter網站 12 Ç是Groovy中,類似於Java語言。Groovy建立在Java之上,可輕鬆與Java庫互操作。

業務邏輯Controllers通常特定於網站實施。但是,大量頁面或小頁面通常需要執行一些非常常見的操作。例如,Controller頁面的可能會確定要在視圖中顯示並在小頁面中顯示每個資產的資產列表。可以想象,可能需要自定義業務邏輯來提供資產列表(例如對某些文章的查詢)。在這種情況下,唯一Controller必要的邏輯就是搜索資產。對於整個網站,此邏輯可以相同。

WebCenter網站附帶了一組Controllers已構建的通用使用模式,例如用於讀取資產的導航。Oracle鼓勵開發人員Controllers在適用的情況下使用以下即用型功能:

  • AssetController
  • NavigationController
  • TableController
  • SegmentsController
  • ProfileBasedRecommendationController
  • SegmentBasedRecommendationController

頁面的某些部分可能具有自定義Controllers以及帶有的視圖Controllers。您可以擴展Controllers。

觀看次數

在的WebCenter站點,Template並且SiteEntry資產代表的意見。每個Template和SiteEntry資產都可以鏈接到一個Controller實例。

使用MVC框架構建視圖時,Oracle建議您使用JSP作為腳本語言來構建視圖,並使用JSTL來訪問模型中的數據。當用於資產中的用於訪問資產數據的WebCenter Sites標記繼續工作時Template,Oracle建議開發人員Controllers改為使用Java API ,並且僅將視圖代碼用於管理演示。這將邏輯與表示分開。請參閱服務器端Java API。

頁面,Pagelet和元素

模板和SiteEntry資產既可以是頁面也可以是pagelet,但是CSElement始終是一個元素。使用模板和元素將資產顯示在頁面或小頁面中。

在“ WebCenter站點”上下文中,在線頁面是將幾個組件組合成一個可見的最終輸出。創建該輸出稱為渲染。使輸出或要呈現給公共站點上的訪問者的內容稱為發佈。

WebCenter網站通過執行與頁面名稱關聯的代碼來呈現頁面。頁面的名稱從瀏覽器傳遞到WebCenter站點,並且WebCenter站點調用與該頁面名稱關聯的代碼。該代碼實際上位於一個命名文件中,這是稱為元素的單獨代碼塊。

元素中的代碼標識要顯示在頁面或小頁面中的資產,加載資產,然後將其他頁面名稱和元素名稱傳遞給WebCenter站點。當WebCenter Sites調用一個元素時,將執行該元素中的所有代碼。如果存在對其他元素的調用,則依次調用這些元素。然後將結果,圖像,文章,鏈接集等(包括任何HTML標記)呈現為HTML代碼(如果配置了系統,則顯示為其他某種輸出格式)。

Template,CSElement和SiteEntry資產表示元素和小頁面,如下所示:

  • 甲Template資產既是元件和呈現資產網頁或小網頁。
  • 甲CSElement資產是一個元素。
  • 一個SiteEntry資產是一個網頁或小頁的名稱。

模板和CSElement資產

您需要了解一些有關Template和CSElement資產的知識。

  • Template 資產根據適用於單一資產類型還是不適用於資產類型而分類為有類型或無類型。
  • 如果您使用SiteLauncher(用於複製站點或共享Template和CSElement資產),則WebCenter站點需要元素邏輯來間接引用資產,資產類型,屬性名稱和Template名稱。為此,WebCenter Sites界面引入了Map屏幕,API引入了render:lookup標籤。使用“映射”屏幕,為每個值分配一個別名。然後,您可以在元素邏輯中對別名進行硬編碼,並使用render:lookup標籤在運行時從別名中檢索實際值。
  • 緩存規則領域進行了簡化,減少錯誤。Template開發人員可以選擇CachedUncachedAdvanced。選擇“ 高級”可以使開發人員分別為WebCenter站點和Oracle WebCenter站點“ Satellite Server”設置緩存規則。
  • calltemplate引入了一個新標籤,以Templates簡化Template編寫過程的方式進行調用。
  • PageCriteria場已更名為緩存標準。它接受下列保留參數:c,cid,context,p,rendermode,site,sitepfx,ft_ss,和自定義的參數。緩存條件值存儲在表的pagecriteria列中SiteCatalog(在以前的版本中,它們存儲在表的resargs列中SiteCatalog)。該
    緩存標準領域也被用來保持變量,使該額外的參數在CKEditor的部分,讓他們提供給用戶,在包括資產鏈接添加資產鏈接對話框。所述額外的參數部分提供傳遞自定義的參數(如圖像的尺寸)到的一種方式Template。請參見使用Oracle WebCenter站點中的使用 CKEditor。
  • 選項卡細分了用於創建Template和CSElement資產的表單,並且選項卡上的字段按功能進行了組織。

請參閱創建模板,CSElement和SiteEntry資產

頁面資產和網站導航

頁面資產存儲對其他資產的引用,並根據站點設計進行組織。頁面資產代表網站的各個部分,提供了一個方便的結構化組織,類似於完成的網站。

網站開發人員通常在網站設計期間創建頁面資產。請參閱創建頁面資產。

您可以將頁面,文章和其他類型的資產與頁面資產和格式化關聯資產的代碼模板元素相關聯。

一個Template與頁面資產相關包含所呈現的頁面和導航到其他渲染頁面的佈局。

要將頁面資產的網站導航放在一起,可以使用WebCenter網站WebCenter網站 Java API或REST API。請參閱服務器端Java API和REST API。

基於日期的預覽

使用基於日期的呈現,內容提供者可以在“提供者”界面中預覽資產。如果您有興趣建立一個基於查看日期而更改的網站,則可以使用資產中可用的開始日期和結束日期。還可以使用WebCenter網站預覽工具預覽此類網站的將來外觀。

內容創建者可以在“貢獻者”界面的“編輯”屏幕上指定開始日期和結束日期。他們可以通過網站的用戶界面預覽內容,然後查看將來的某個日期,並查看該日期網站的外觀。

例如,您可能要構建一個假期網站並預覽其外觀。

請參閱Asset Reader,這是一個Java API,它提供了一種方便的方法來按日期進行過濾。

多語種支持

使用WebCenter站點開發的多語言站點的用戶可以為資產分配語言環境(語言版本)名稱,並創建資產的翻譯。您可以創建特定於站點的交付規則,這些規則確定要在在線站點上顯示的資產的語言版本,以及如果請求的語言版本不存在該怎麼辦。

WebCenter站點中的區域設置是通過維度的概念實現的。維度是一個標識符,用於區分語義上相同的資產。語言環境(例如en_US美國英語)是一種維度類型,可以區分相同內容的兩種翻譯。

尺寸由類型的資產表示Dimension。開發人員必須在每個站點上啟用此資產類型,以便用戶可以創建Dimension(子類型的Locale)資產,以便內容提供商可以將語言環境名稱分配給他們想要轉換的資產。

注意:

用戶無法創建未分配語言環境名稱的資產的翻譯。

每個Dimension資產代表站點上的語言環境。例如,en_US Dimension資產表示美國英語,fr_CA Dimension資產表示加拿大法語。請參閱Asset Reader,這是一個Java API,可讓您訪問已翻譯的資產。

在給定語言環境中發佈內容需要在在線站點上啟用語言環境。這Dimension會將代表語言環境的資產發佈到交付系統,並將語言環境包括在站點Dimension集中。

MVC框架中的緩存

MVC Framework中的頁面緩存功能類似於Template使用JSP標記編碼的資產。在新框架中,業務邏輯代碼移至Controller資產,而Template資產僅負責表示方面。頁面緩存中緩存的仍然是頁面或小頁面標記。與頁面let相關聯的業務邏輯僅在未緩存該頁面let時運行。

Controller與a相關聯的資產Template作為緩存依賴關係以及在Controller’s業務邏輯中讀取的所有資產被添加。Controller資產或作為Controller’s業務邏輯一部分讀取的資產的任何更新都將使緩存無效。

Template資產中的緩存條件參數繼續確定頁面let級別的緩存行為。有關WebCenter站點中緩存工作方式的說明,請參閱瞭解頁面設計和緩存。

服務器端Java API

要組合一個網頁,通常會使用各種服務器端Java API。

WebCenter網站提供:

  • 資產閱讀器
  • 導航閱讀器
  • 鏈接生成器
  • Blob鏈接生成器
  • 搜索者
  • 推薦讀者
  • 表格閱讀器

以下是這些API的簡要說明和示例。該開發者的樣品網站提供了額外的說明和示例。

資產閱讀器

Asset Reader API讀取資產並返回所有數據或您指定的數據。您可以使用中的方法AssetReader以簡化的方式讀取資產,並僅返回必需和相關的信息。

A Controller結合使用這些方法來構建a Template可以輕鬆使用的資產。此示例顯示了Controller可用於AssetReader讀取資產的簡單示例。

示例13-1資產讀取器控制器

<code>package oracle.webcenter.sites.controller

import com.fatwire.assetapi.data.*
public class AssetController extends BaseController
{
@RequiredParams(query="c,cid")
public void doWork(Map models)
{
Map assetMap = newAssetReader()
.forAsset(getAssetId())
.selectAll(true)
.read();
models.put("asset", assetMap);
}
/<code>

該assetData地圖是提供給Template該選AssetController作為Controller。此示例顯示了Template呈現資產的a 外觀:

示例13-2資產讀取器的模板

<code>%>%><ftcs>
<table>
<foreach>
<tbody>

${a.key} :


${a.value}

/<tbody>
/<foreach>
/<table>
/<ftcs>/<code>

該Controller讀出與資產ID資產'1328196047443'與資產類型'AVIArticle',並把它在地圖'assetData'。該selectAll(true)方法使用其所有屬性來構建資產。

您可以轉到開發人員的示例網站,然後從“ 渲染API”菜單中選擇“ 資產閱讀器”以獲取更多信息。

導航閱讀器

Navigation Reader API繪製用於導航的麵包屑。

此示例顯示了Controller資產的示例導航。

示例13-3導航控制器

<code>package oracle.webcenter.sites.controller
import com.fatwire.assetapi.data.*
import com.openmarket.xcelerate.asset.*

public class NavigationController extends BaseController
{
@RequiredParams(query="c,cid")
public void doWork(Map models)
{
Map assetMap = newNavigationReader()

.forAsset(getAssetId())
.read();
models.put("asset", assetMap);
}
}
/<code>

本示例顯示了Navigation的樣本視圖(模板)Controller。

示例13-4導航控制器的視圖

<code>
%>

Asset Name : ${asset.name}

Asset Id : ${asset.name}

Asset Parent : ${asset.parents[0].name}/<code>

中的newNavigationReader()方法BaseController返回導航閱讀器。前面的示例Controller獲取了站點計劃中資產的直接父項。例如,avisports中非觸摸式衝浪頁面的層次結構為NonTouch/Home/Surfing,並且前面的頁面Template顯示以下文本:

<code>Asset Name : Surfing
Asset Id : Surfing
Asset Parent : Home/<code>

您可以轉到開發人員的示例網站,然後從“ 渲染API”菜單中選擇“ 導航閱讀器”以獲取更多信息。

鏈接生成器

Link Builder API生成到資產的鏈接。

此示例顯示了一個示例Controller。

示例13-5鏈接生成器控制器

<code>package oracle.webcenter.sites.controller

import com.fatwire.assetapi.data.*
import com.openmarket.xcelerate.asset.*

public class linfo extends BaseController {

@Override
public void doWork(Map models) {
LinkInfo linkInfo = newAssetLinkInfo();
linkInfo.forAsset(getAssetId());

Map assetMap = newAssetReader()
.forAsset(assetID)
.selectAll(true)
.addAssetLinkInfo(linkInfo)
.read();
models.put("asset", assetMap);
}
}/<code>

本示例顯示了TemplateLink Builder 的示例。

示例13-6鏈接生成器模板

<code>

<ftcs>
<table>

Asset Name :


${asset.name}


Link:




/<table>
/<ftcs>/<code>

前面的代碼樣品顯示一個簡單的Controller和Template為LinkInfo。此代碼為Article資產ID為‘1328196047443'的生成鏈接。資產地圖包含一個鍵_link_。其值是資產的默認URL。

在中Template,${asset._link_}應獲取資產的默認網址。鏈接看起來像這樣:

<code>http://localhost:8080/cs/avi/avisection/baseball.html/<code>

有關更多信息,請轉到開發人員的示例網站,然後從“ 渲染API”菜單中選擇“ 鏈接生成器 ” 。

Blob鏈接生成器

Blob鏈接構建器API生成到Blob的鏈接。如果希望在讀取資產時顯示Blob鏈接,則可以使用該addBlobLinkInfo(BlobLinkInfo blobLinkMaker)方法。

此示例顯示了一個示例Controller。

示例13-7 Blob鏈接構建器控制器

<code>package oracle.webcenter.sites.controller

import com.fatwire.assetapi.data.*
import com.openmarket.xcelerate.asset.*

public class bloblink extends BaseController
{
public void doWork(Map models)
{

def mapParams = [:]
mapParams.put("blobheadername1","Content-Type")
mapParams.put("blobheadervalue1","image/gif")
mapParams.put("blobheadername2","Cache-Control")
mapParams.put("blobheadervalue2","no-cache")

BlobLinkInfo blobLink = newBlobLinkInfo();
blobLink.parameters(mapParams)


Map assetMap = newAssetReader().forAsset(getAssetId())
.select("Assoc_Named_Manual.*")
.addBlobLinkInfo(blobLink)
.read();
models.put("asset", assetMap);
}
}
/<code>

本示例顯示了TemplateBlob Link Builder 的示例。

示例13-8 Blob鏈接構建器模板

<code><ftcs>
<table>

Link1:





Link2:




/<table>
/<ftcs>/<code>

前面的代碼將鏈接打印到Product_ C與資產ID 關聯的任何Blob資產1114083739596。此資產具有一個Document_C關聯,其中包含兩個Blob FSIIDocumentFile和FSIIHtmlFile。該代碼顯示到這些Blob的鏈接:

<code>/sites/BlobServer?blobkey=id&blobnocache=true&blobwhere=1114725604909&blobcol=urldata
&blobtable=MungoBlobs&Content-Type=image/gif&Cache-Control&no-cache

/sites/BlobServer?blobkey=id&blobnocache=true&blobwhere=1114725604910&blobcol=urldata
&blobtable=MungoBlobs&Content-Type=image/gif&Cache-Control&no-cache/<code>

如果有虛名URL,代碼將顯示它。

您可以轉到開發人員的示例網站,然後從“ 渲染API”菜單中選擇“ Blob鏈接構建器”以獲取更多信息。

搜索者

Searcher API在資產上構建搜索查詢

示例13-9搜索器控制器

本示例顯示了TemplateSearcher 的示例。

<code>package oracle.webcenter.sites.controller

import com.fatwire.assetapi.data.*
import com.openmarket.xcelerate.asset.*

public class SearchController extends BaseController
{
@RequiredParams(query="c,cid")
public void doWork(Map models)
{
def results = newSearcher().searchFor("audio")
models.put("results",results)
}
}/<code>

本示例顯示了TemplateSearcher 的示例。

示例13-10搜索器模板

<code>

%><ftcs>
<table>
<foreach>


${result.id}


${result.name}


/<foreach>
/<table>
/<ftcs>/<code>

中的newSearcher()方法BaseController返回Searcher。您可以將類中的一個或多個方法Searcher應用於此搜索器。前面的內容Controller收集了包含單詞的所有資產“audio”。要查找包含該單詞且屬於特定站點的所有資產,可以使用以下inSite(String site)方法:

<code>def results = newSearcher().inSite("FirstSiteII").searchFor("audio")/<code>

您可以轉到開發人員的示例網站,然後從“ 渲染API”菜單中選擇“ 搜索器”以獲取更多信息。

推薦讀者

推薦閱讀器API根據訪問者按屬性(例如性別或愛好)進行細分來讀取訪問者的推薦。向細分受眾群中的訪問者推薦一項或多項資產。

要讀取特定訪客可能所屬的所有細分,您可以使用readSegments()方法和Template推薦閱讀器,如示例所示。

示例13-11讀取段的方法

<code> Controller Logic:
.
package oracle.webcenter.sites.controller
.
import com.fatwire.assetapi.data.*
import com.openmarket.xcelerate.asset.*
import com.fatwire.assetapi.fragment.*
import com.fatwire.assetapi.common.AssetAccessException;
.
public class RecommendationController extends BaseController
{
@Override
@RequiredParams(query = "segments,recommendation,sitename")
protected void doWork(Map models) {
String segments = variables.segments;
String recommendation = variables.recommendation;
String sitename = variables.sitename;
try {
List
recommendations = newRecommendationReader()
.forSite(sitename)
.forSegments(segments)
.readRecommendations(recommendation);
models.put("segments", segments);
models.put("recommendation", recommendation);
models.put("sitename", sitename);
models.put("recommendations", recommendations);
} catch (AssetAccessException e) {
e.printStackTrace();
}
}
}
.
Template Logic:
.
%>%>%>%>%>
<ftcs>

<then><logdep>cid='' c="Template"/>/<logdep>/<then>
.
Segments : ${segments}
Recommendation : ${recommendation}
Site Name : ${sitename}
Recommendations :
.
<table>
<foreach>


${singleRecommendation}


/<foreach>
/<table>
.
/<ftcs>
/<code>

上面的代碼示例顯示給定站點中當前細分的給定推薦的所有推薦資產。

您可以轉到開發人員的示例網站,並從Rendering API菜單中選擇“ 推薦閱讀器”以獲取更多信息。

表格閱讀器

Table Reader API查詢由WebCenter站點管理的表。

本示例顯示了ControllerTable Reader 的示例。

示例13-12表格讀取器控制器

<code>package oracle.webcenter.sites.controller

import com.fatwire.assetapi.data.*
import com.openmarket.xcelerate.asset.*
import oracle.fatwire.api.TableReader;

public class TableReader extends BaseController
{
public void doWork(Map models)
{
TableReader tr = newTableReader()
def myResult = tr.from("AVIArticle").execute()
models.put("asset", myResult)
}
}/<code>

新TableReader()方法是的工廠方法BaseController。前面的代碼示例從AVIArticle表中獲取所有數據,並將其放入名為的映射中asset。

您可以使用方法指定SELECT參數select(String select):

<code>def myResult = tr.select("name").from("AVIArticle").execute()/<code>

此代碼返回AVIArticle

表的name列中的所有值。

您可以轉到開發人員的示例網站,並從Rendering API菜單中選擇Table Reader,以獲取更多信息。

REST API

WebCenter站點提供了REST API,用於以聚合方式訪問內容。API具有不言自明的URL。搜索API支持大型元數據,以提供各種功能。例如,您可以在選定字段中獲得具有特定值的特定類型資產的自定義列表。

請參閱《Oracle WebCenter站點的RESTful Aggregate REST API參考》。

樣本網站

您可以使用“ WebCenter網站”示例網站來熟悉“ WebCenter網站”框架。

  • 樣本網站請參閱開發者示例網站。
  • 航空樣本站點該站點說明了“ WebCenter站點貢獻者”界面中的功能,例如在“表單模式”和“ Web模式”下創建和編輯資產。此外,avisports還為開發人員提供了示例Templates,這些示例經過編碼以在Web模式下呈現資產的“創建”或“編輯”視圖,或同時呈現這兩種視圖。
  • REST-avisports示例網站該站點具有完全使用REST API構建的avisports的示例參考實現。該網站的功能方面與avisports相同,並使用相同的資產模型和內容。該示例站點是開始基於REST API的網站開發的一個很好的參考點。


分享到:


相關文章: