`
hunte
  • 浏览: 12655 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

在ADF Faces中实现页面模板化

阅读更多
 

JSF中模板化页面的方法

JSF 1.1规范中未明确定义如何模板化页面。因JSF的标准VIEW技术是JSP,所以过去使用的一些技术,比如tiles仍然通用,不过要多做一些工作。另外,开源项目facelet (https://facelets.dev.java.net/)则是专门针对JSF环境下的JSP页面的模板化而开发的,理解和使用也都比较方便。这里将要展示的则是另外一个方法,只适合于ADF Faces组件:将pagepanelPage页面对象与后台进行绑定,在后台设置page的内容。

page/panelPage与后台对象绑定

如下代码来自于SRMain.jspx

    <af:document title="#{res['srdemo.browserTitle']}">

      <af:form>

        <af:page title="#{res['srmain.pageTitle']} {userState.currentSvrId}"

                 binding="#{pageTemplateBean.pageTemplate}">

这里把page与后台pageTemplateBeanpageTemplate进行绑定。pageTemplateBean的代码如下:

import javax.faces.application.Application;

import javax.faces.component.UIParameter;

import javax.faces.component.html.HtmlOutputFormat;

import javax.faces.context.FacesContext;

<o:p> </o:p>

import javax.faces.el.MethodBinding;

<o:p> </o:p>

import javax.faces.event.ActionEvent;

<o:p> </o:p>

import oracle.adf.view.faces.component.core.nav.CoreCommandLink;

import oracle.adf.view.faces.component.core.nav.CoreCommandMenuItem;

import oracle.adf.view.faces.component.core.nav.CorePage;

import oracle.adf.view.faces.component.core.output.CoreMessages;

import oracle.adf.view.faces.component.core.output.CoreObjectImage;

import oracle.adf.view.faces.component.core.output.CoreOutputFormatted;

import oracle.adf.view.faces.component.core.output.CoreOutputText;

<o:p> </o:p>

import oracle.srdemo.view.util.JSFUtils;

<o:p> </o:p>

<o:p> </o:p>

public class PageTemplateBean {

<o:p> </o:p>

    private CorePage pageTemplate;

<o:p> </o:p>

    public PageTemplateBean() {

        createPageTemplate();<o:p></o:p>

    }

<o:p> </o:p>

    public void setPageTemplate(CorePage pageTemplate) {

        this.pageTemplate = pageTemplate;

    }

<o:p> </o:p>

    public CorePage getPageTemplate() {

        return pageTemplate;

    }

<o:p> </o:p>

    private void createPageTemplate() {

<o:p> </o:p>

        FacesContext facesContext = FacesContext.getCurrentInstance();

        Application application = facesContext.getApplication();

<o:p> </o:p>

        this.pageTemplate = new CorePage();

<o:p> </o:p>

        pageTemplate.setValueBinding("value",

                                     application.createValueBinding("#{appMenu.model}"));

        pageTemplate.setVar("menuItem");

<o:p> </o:p>

        CoreObjectImage branding = new CoreObjectImage();

        branding.setSource("/images/SRBranding.gif");

        pageTemplate.setBranding(branding);

<o:p> </o:p>

        CoreObjectImage brandingApp = new CoreObjectImage();

        brandingApp.setSource("/images/SRBranding.gif");

        pageTemplate.setBrandingApp(brandingApp);

<o:p> </o:p>

        pageTemplate.setMessages(new CoreMessages());

<o:p> </o:p>

        CoreOutputText appCopyright = new CoreOutputText();

        appCopyright.setValueBinding("value",

                                     application.createValueBinding("#{res['srdemo.copyright']}"));

        pageTemplate.setAppCopyright(appCopyright);

<o:p> </o:p>

<o:p> </o:p>

        CoreOutputText appAbout = new CoreOutputText();

        appAbout.setValue("About");

        pageTemplate.setAppAbout(appAbout);

…<o:p></o:p>

        CoreCommandMenuItem nodeStamp = new CoreCommandMenuItem();

<o:p> </o:p>

        nodeStamp.setValueBinding("text",

                                  application.createValueBinding("#{menuItem.label}"));

        nodeStamp.setValueBinding("type",

                                  application.createValueBinding("#{menuItem.type}"));

        MethodBinding mb = application.createMethodBinding("#{menuItem.getOutcome}", null);

        nodeStamp.setAction(mb);

        nodeStamp.setValueBinding("icon",

                                  application.createValueBinding("#{menuItem.icon}"));

<o:p> </o:p>

        pageTemplate.setNodeStamp(nodeStamp);

    }

}

<o:p> </o:p>

pageTemplateBean类的createPageTemplate方法中,用代码控制的方法逐一建立诸如appCopyrightinfoUser等标准page所具有的facet

分享到:
评论

相关推荐

    ADF应用程序样例(中文)

    - **步骤11**:创建一个新的JSPX页面,并确保选择ADFFaces模板。 - **步骤12**:将DataControls中的VO拖拽到页面上,创建ADF Table。 - **步骤13**:配置ADF Table的属性,如列显示等。 - **步骤14**:预览页面,...

    oracle ADF

    1. **项目创建**:在JDeveloper中创建一个新的项目,选择适合的模板。 2. **数据模型定义**:使用JDeveloper提供的工具来定义数据模型,这通常涉及到数据库表结构的设计以及实体类的生成。 3. **页面设计**:使用ADF...

    oracle ADF命名规范

    首先,ADF命名规范和项目布局指南适用于使用ADFBusinessComponents和ADFFaces Rich Client构建的ADF应用程序,此指南覆盖的是11g版本及以上的ADF框架。命名规范的目标是为开发人员和开发团队提供一个捷径,以便在...

    adf文件开发技术

    - **创建项目**:在 JDeveloper 中创建一个新的 ADF 项目,选择合适的模板以加快开发进程。 - **配置数据源**:为了使 ADF 能够连接到数据库,需要正确配置数据源信息。 - **部署设置**:最后还需要对应用程序的部署...

    oracleADF开发指南

    - **页面生命周期**:理解页面加载、事件处理和提交过程中的各个阶段。 #### 五、控制层开发 - **业务流程管理**:利用 ADF BC 创建和管理复杂的业务流程。 - **事务处理**:实现细粒度的事务控制,确保数据的...

    Oracle ADF开发实战指南

    - **初始化ADF模型项目**:在JDeveloper中创建ADF模型项目。 - **创建EO**:使用向导创建EO类。 - **选择数据库对象类型**:根据数据库表结构选择合适的类型。 - **生成Java类**:自动生成对应的Java类。 - **...

    oracle adf JDeveloper 教程 java j2ee

    - **设置项目模板**:根据项目需求选择合适的模板,例如使用ADF Faces模板快速搭建前端UI。 - **配置数据库连接**:在JDeveloper中配置与后端数据库的连接,确保数据能够正确读取和写入。 ##### 2. 开发用户界面 -...

    arcgisserver精典讲座系列之二--Web ADF

    要在 JSP 页面中使用 Web ADF 控件,首先需要声明 JSF 和 Web ADF 的标签库: ```jsp &lt;%@taglib uri="http://www.esri.com/adf/web" prefix="a" %&gt; ``` 然后,在页面中使用 `&lt;a:context&gt;`、`&lt;a:map&gt;`、`&lt;a:toc&gt;` ...

    Oracle Application Development Framework

    Task Flows可以被嵌入到JSF页面中,从而实现业务流程与用户界面的无缝集成。 三、ADF的开发和部署 ADF的开发和部署通常在Oracle JDeveloper环境中进行。JDeveloper是Oracle提供的一个集成开发环境,它集成了所有的...

    ADF_inputDate

    在JSF (JavaServer Faces) 视图层的XML文件(.jspx)中,可以使用以下代码创建一个基本的`InputDate`组件: ```xml 日期选择" /&gt; ``` 这里,`id`是组件的唯一标识,`value`属性绑定到后台bean的属性,`label`则是...

    Facelets

    例如,`&lt;ui:define&gt;` 用于在模板中定义可替换区域,而 `&lt;ui:insert&gt;` 允许子页面填充这些区域。 9. **Facelets 架构**:Facelets 的视图创建过程涉及文档编译,Facelets API 包括 `FaceletFactory`、`Facelet` 和 `...

    arcgis_server

    4. **ADF的启动与初始化**:在Web服务器启动时,ADFServletContextListener会监听服务器状态。一旦服务器准备好,它会触发contextInitialized方法,进而初始化ADF Web Application。此时,会创建一个包含多个Web...

    JDeveloper 11g Overview

    - **模型-视图-控制器 (MVC)**: 使用 ADF Business Components (ADF BC) 作为模型层,支持多种前端展示技术,如 JSF/ADF Faces、Swing、Portlets 等。 - **部署平台**: 可在多种服务器上部署,包括 Oracle 自家的 ...

    Building_Web_Applications_with_ArcGIS_Server_and_Java

    - **What you know**:这部分提到了读者应该已经具备的基础知识,包括Java、简单的Java Server Faces (JSF)框架以及对ArcGIS Java Web ADF的基本了解。 - **What I will cover**:作者计划讲解的内容包括: - Map...

    JDeveloper指南22

    它提供了JSF组件库,可以方便地拖放组件到页面,同时支持Facelets模板和Composite Component,有助于创建可重用的UI元素。 五、开发环境特性 1. **代码编辑器**:JDeveloper的代码编辑器具备语法高亮、自动完成和...

    精通J2EE应用程序开发

    - **Web服务**:通过JAXM、SAAJ、JAX-RPC等技术实现的服务化架构。 #### 四、设计和建模 - **设计模式**:如MVC(Model-View-Controller)等模式有助于更好地组织代码和提高可维护性。 - **领域驱动设计**(DDD)...

    maf-springboard:MAF 跳板 ViewController 项目

    在这个项目中,"跳板"通常指的是应用程序的主界面或者导航中心,用户可以通过它访问到其他各个功能模块。 **一、Mobile Application Framework (MAF)** 1. **简介**:MAF是Oracle ADF Mobile的后续产品,支持多...

Global site tag (gtag.js) - Google Analytics