您的位置 首页 java

让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,以及安装的主机名和端口号:

   

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开发人员可以选择 Cached Uncached Advanced 。选择“ 高级” 可以使开发人员分别为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资产读取器控制器

 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);
      }
  

该assetData地图是提供给Template该选AssetController作为Controller。此示例显示了Template呈现资产的a 外观:

示例13-2资产读取器的模板

 <%@ taglib prefix="cs" uri="futuretense_cs/ftcs1_0.tld"
%><%@taglib prefix="c" uri="#34;
%><cs:ftcs><%-- AVIArticle/myarticle --%>
<table border="1">
    <c:forEach var="a" items="${asset}">
    <tbody>
        <tr>
            <td><h4>${a.key} : </h4></td>
            <td>${a.value}</td>
        </tr>
        </tbody>
     </c:forEach>
</table>
</cs:ftcs>  

该Controller读出与资产ID资产’1328196047443’与资产类型’AVIArticle’,并把它在地图’assetData’。该selectAll(true)方法使用其所有属性来构建资产。

您可以转到开发人员的示例网站,然后从“ 渲染API” 菜单中选择“ 资产阅读器” 以获取更多信息。

导航阅读器

Navigation Reader API绘制用于导航的面包屑。

此示例显示了Controller资产的示例导航。

示例13-3导航控制器

 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);
      }
}
  

本示例显示了Navigation的样本视图(模板)Controller。

示例13-4导航控制器的视图

 <%@ taglib prefix="render" uri="futuretense_cs/ftcs1_0.tld"

%><%-- Page/avipage --%>

      Asset Name : ${asset.name}

      Asset Id : ${asset.name}

      Asset Parent : ${asset.parents[0].name}  

中的newNavigationReader()方法BaseController返回导航阅读器。前面的示例Controller获取了站点计划中资产的直接父项。例如,avisports中非触摸式冲浪页面的层次结构为NonTouch/Home/Surfing,并且前面的页面Template显示以下文本:

 Asset Name : Surfing
Asset Id : Surfing
Asset Parent : Home  

您可以转到开发人员的示例网站,然后从“ 渲染API” 菜单中选择“ 导航阅读器” 以获取更多信息。

链接生成器

Link Builder API生成到资产的链接。

此示例显示了一个示例Controller。

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

 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);
        }
}  

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

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

 <%@ taglib prefix="render" uri="futuretense_cs/ftcs1_0.tld"%>

    <cs:ftcs><%-- AVIArticle/myarticle --%>
        <table border=1>
            <tr>
                <td><h4> Asset Name : </td>
                <td></h4> ${asset.name} </td>
            </tr>
            <tr>
                <td><h4>Link: </td>
                <td?</h4><a href="${asset._link_}"> ${asset._link_}</a></td>
            </tr>
        </table>
    </cd:ftcs>   

前面的代码样品显示一个简单的Controller和Template为LinkInfo。此代码为Article资产ID为‘1328196047443’的生成链接。资产地图包含一个键_link_。其值是资产的默认URL。

在中Template,${asset._link_}应获取资产的默认网址。链接看起来像这样:

   

有关更多信息,请转到开发人员的示例网站,然后从“ 渲染API” 菜单中选择“ 链接生成器 ” 。

Blob链接生成器

Blob链接构建器API生成到Blob的链接。如果希望在读取资产时显示Blob链接,则可以使用该addBlobLinkInfo(BlobLinkInfo blobLinkMaker)方法。

此示例显示了一个示例Controller。

示例13-7 Blob链接构建器控制器

 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);
    }
}
  

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

示例13-8 Blob链接构建器模板

 <cs:ftcs><%-- Product_C/ptemplate --%>
    <table border=1>
    <tr>
    <td><h4>Link1: </td>
    <td></h4><a href='${asset["Assoc_Named_Manual.FSIIDocumentFile_bloblink_"]}'>
    ${asset["Assoc_Named_Manual.FSIIDocumentFile_bloblink_"]}</a></td>
    </tr>
    <tr>
    <td><h4>Link2: </td>
    <td></h4><a href='${asset["Assoc_Named_Manual.FSIIHtmlFile_bloblink_"]}'>
    ${asset["Assoc_Named_Manual.FSIIHtmlFile_bloblink_"]}</a></td>
    </tr>
    </table>
    </cs:ftcs>  

前面的代码将链接打印到Product_ C与资产ID 关联的任何Blob资产1114083739596。此资产具有一个Document_C关联,其中包含两个Blob FSIIDocumentFile和FSIIHtmlFile。该代码显示到这些Blob的链接:

 /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  

如果有虚名URL,代码将显示它。

您可以转到开发人员的示例网站,然后从“ 渲染API” 菜单中选择“ Blob链接构建器” 以获取更多信息。

搜索者

Searcher API在资产上构建搜索查询

示例13-9搜索器控制器

本示例显示了TemplateSearcher 的示例。

 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)
    }
}  

本示例显示了TemplateSearcher 的示例。

示例13-10搜索器模板

 <%@ taglib prefix="render" uri="futuretense_cs/ftcs1_0.tld"%>

<%@taglib prefix="c" uri="#34;
%><cs:ftcs><%-- Product_C/ptemplate --%>
    <table>
        <c:forEach var="result" items="${results}" >
            <tr>
                <td>
                    ${result.id}
                </td>
                <td>
                    ${result.name}
                </td>
            </tr>
        </c:forEach>
    </table>
</cs:ftcs>  

中的newSearcher()方法BaseController返回Searcher。您可以将类中的一个或多个方法Searcher应用于此搜索器。前面的内容Controller收集了包含单词的所有资产“audio”。要查找包含该单词且属于特定站点的所有资产,可以使用以下inSite(String site)方法:

 def results = newSearcher().inSite("FirstSiteII").searchFor("audio")  

您可以转到开发人员的示例网站,然后从“ 渲染API” 菜单中选择“ 搜索器” 以获取更多信息。

推荐读者

推荐阅读器API根据访问者按属性(例如性别或爱好)进行细分来读取访问者的推荐。向细分受众群中的访问者推荐一项或多项资产。

要读取特定访客可能所属的所有细分,您可以使用readSegments()方法和Template推荐阅读器,如示例所示。

示例13-11读取段的方法

  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<Map> 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:
.
<%@ taglib prefix="cs" uri="futuretense_cs/ftcs1_0.tld"
%><%@ taglib prefix="ics" uri="futuretense_cs/ics.tld"
%><%@ taglib prefix="render" uri="futuretense_cs/render.tld"
%><%@ taglib prefix="fragment" uri="futuretense_cs/fragment.tld"
%><%@ taglib prefix="c" uri="#34;
%>
<cs:ftcs><%-- /RecommendationTemplate --%>
<%-- Record dependencies for the Template --%>
<ics:if condition='<%=ics.GetVar("tid")!=null%>'><ics:then><render:logdep
cid='<%=ics.GetVar("tid")%>' c="Template"/></ics:then></ics:if>
.
Segments : ${segments}
Recommendation : ${recommendation}
Site Name : ${sitename}
Recommendations :
.
    <table>
      <c:forEach var="singleRecommendation" items="${recommendations}" >
        <tr>
            <td>
                ${singleRecommendation}
             </td>
          </tr>
      </c:forEach>    
    </table>
.
</cs:ftcs>  

上面的代码示例显示给定站点中当前细分的给定推荐的所有推荐资产。

您可以转到开发人员的示例网站,并从 Rendering API 菜单中选择“ 推荐阅读器” 以获取更多信息。

表格阅读器

Table Reader API查询由WebCenter站点管理的表。

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

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

 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)
    }
}  

新TableReader()方法是的工厂方法BaseController。前面的代码示例从AVIArticle表中获取所有数据,并将其放入名为的映射中asset。

您可以使用方法指定SELECT参数select(String select):

 def myResult = tr.select("name").from("AVIArticle").execute()  

此代码返回 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的网站开发的一个很好的参考点。

文章来源:智云一二三科技

文章标题:让Java程序员工程师,带你使用MVC框架和API开发网站,从此不再难

文章地址:https://www.zhihuclub.com/186527.shtml

关于作者: 智云科技

热门文章

评论已关闭

3条评论

  1. To prevent hypoperfusion of the kidneys, urine output should be maintained at 50 to 80 mL h

网站地图