ADF Code Corner is a blog style column that provides hints, tips and coding examples for ADF developers. The content on this page ranges from easy to complex and often contain advanced programming concepts.
The content on this page is inspired by questions asked on the Oracle JDeveloper customer forum on OTN
Disclaimer: All samples are provided as is with no guarantee for future upgrades or error correction. No support can be given through Oracle customer support.
|References & Links||Links to external reference material like the ADF Enterprise Methodology Group (EMG), ADF Architecture Square, the ADF TV Youtube channel, ADF Insider and more. I recommend you visit all these sources and bookmark them.|
|Oracle ADF Books||A list of well ADF books that I recommend you have a look at. The books are for architects, developers of all kind of skill sets. Also worth to check book selling websites for more ADF books as this list doesn't pretend to be complete.|
|Oracle Magazine Articles||Oracle Magazine has a ADF column that covers topics similar to those on ADF Code Corner. This link takes you the links and titles for the various articles.|
|ADF Code Corner Samples||Documented solutions and code samples for common developer tasks. The samples are provided as they are but usually come with documention and a downloadable sample for you to look at and change for your requirements|
|OTN Harvest Summaries||Monthly summary of interesting JDeveloper and ADF questions asked on the OTN forum for Oracle JDeveloper and ADF.|
|ADF Architecture TV||Do you want to learn the "big picture" of ADF development? Interested in design, architecture, development & deployment best practices and more? Then subscribe to the ADF Architecture TV channel where over 100 episodes delivered weekly by key Oracle ADF staff will discuss what you need to know to build a successful ADF application.|
|ADF Architecture Square||When developing with a new technology, one of the challenges for technical staff is to both learn the features of the technology and how to implement them, and also consider the broader concepts of design, engineering and architecture. Many an IT project has come undone because IT staff have been focused on the nitty gritty details of writing software, rather than looking at the "bigger picture" of how it will all go together.
The Oracle ADF Architecture Square is designed to address this issue by focusing on architectural issues and developer guidelines for writing ADF software solutions. The goal, to give ADF developers an understanding of the decisions you need to build a successful ADF application, potential architectural blueprints to choose from when putting the ADF application together, and potential best practices to take back to your development team.
|ADF Insider||This page contains recorded sessions related to the advanced techniques with Oracle Application Development Framework. Check back regularly for updates by experts, for experts|
|Enterprise Methodology Group (EMG)||A place to discuss best practices and methodologies for Oracle JDeveloper and ADF Enterprise development, including effort by "experts" in ADF to discuss higher level architecture issues than those discussed on the OTN JDeveloper technical forums. This effort is to get ADF experts, advocates and programmers to start collaborating.|
|Aggregated JDeveloper & ADF blogs||A well indexed and searchable bookmark collection of Oracle JDeveloper and ADF blog entries and articles that makes the developer life easy. A true Almanach of Oracle ADF knowldege|
Oracle ADF Real World Developer’s Guide
Mastering essential tips and tricks for building next generation enterprise applications with Oracle ADF
Oracle Fusion Developer Guide
Building Rich Internet Applications with Oracle ADF Business Components and ADF Faces
Oracle JDeveloper 11g Handbook
A Guide to Oracle Fusion Web Development
Quick Start Guide to Oracle Fusion Development
Oracle ADF Enterprise Application Development
— Made Simple (Second Edition)
March/April 2015 -- Design Responsively
User interfaces (UIs) in smartphones and tablets are constrained by the device display size, lack of a physical keyboard, and use of finger gestures instead of mouse pointers. For these reasons, native mobile UIs are usually designed more simply and cleanly, and with more visuals, than equivalent desktop UIs. Mobile UIs tend to focus more on the display of information that is derived from data than on the data itself—the opposite of what most desktop UIs provide.
With the release of Oracle JDeveloper 12.1.3, Oracle Alta UI is now available. Oracle Alta UI is a design system and set of guidelines that promote a mobile-first design for Oracle Application Development Framework (Oracle ADF) web applications. Oracle Alta UI helps you build simpler UIs that enable application users to scan information quickly and perform work actions more easily.
This column provides an overview of Oracle Alta UI for the Oracle ADF Faces feature of Oracle ADF and gives you hands-on experience with building Oracle Alta UI–designed UIs with Oracle ADF.
November/December 2014 -- Thanks for Sharing
This article steps you through one way to perform a common developer task in Oracle Mobile Application Framework: sharing information among Application Mobile XML (AMX) features.
A feature in Oracle Mobile Application Framework is a unit of work—a single piece of application functionality that users can access from the mobile application springboard. An example of a feature is a product catalog in which users can query and select items to buy. AMX is one of three technologies that you can use to develop features in Oracle Mobile Application Framework.
Oracle Mobile Application Framework mobile applications can be developed in Oracle JDeveloper with the Oracle Mobile Application Framework extension, or in Eclipse with Oracle Enterprise Pack for Eclipse. In this article’s hands-on exercise, you’ll use Oracle JDeveloper and Oracle Mobile Application Framework to implement a customers feature that shares information about the selected customer with an orders feature.
July/August 2014 -- Region Extreme - Multi Task Flow Binding
Oracle Application Development Framework (Oracle ADF) regions display the contents of bounded task flows in designated areas on a page. Each region uses a special binding configuration—the task flow binding—in the Executables section of the parent page’s PageDef.xml file to populate the region content with data from the Oracle ADF binding layer.
In use cases such as analytic dashboards, the contents of an unknown number of task flows must be displayed as regions at runtime. However, Oracle ADF regions cannot be created at runtime. Multi-task-flow binding in Oracle JDeveloper 11g Release 2 and Oracle JDeveloper 12c addresses this limitation. Using a hands-on exercise, this article shows developers how to use multi-task-flow binding in Oracle ADF applications. Parts of the sample application have been prebuilt to give you a head start. In addition to performing the hands-on steps, you can learn more by examining the source files.
March/April 2014 -- JDeveloper 12c : REST for Everyone
Addressing the popularity of RESTful web services in application development, the new Oracle JDeveloper 12c integrated development environment (IDE) provides declarative support for building and consuming Representational State Transfer (REST) services in Java.
In addition, the new Oracle Application Development Framework (Oracle ADF) release includes a new data control for REST services that are to be used as business services for Oracle ADF web applications.
This article provides an overview of REST service development in Oracle JDeveloper 12c and, in its hands-on instructions, steps you through building and consuming a database-bound REST service in Oracle ADF.
November/December 2013 -- Mobile: The Next Big Wave
In his article “The Latest Infographics: Mobile Business Statistics for 2012,” Mark Fidelman, a contributing writer to the Forbes website, presents several interesting facts and statistics about the current and predicted future usage of mobile devices. A clear trend in this article is that business is “going” mobile and that in only a few years, the number of mobile devices will significantly outnumber that of wired devices and PCs used at work and at home. One message to extrapolate from this is that mobile application development is the next big wave in enterprise application development.
This article introduces Oracle ADF Mobile and presents a hands-on mobile development and deployment exercise.
July/August 2013 -- Build Your Own
Declarative components in Oracle Application Development Framework (Oracle ADF) enable application developers to build custom JavaServer Faces (JSF) components from existing Oracle ADF Faces components (Oracle ADF Faces is a feature of Oracle ADF) and deploy them as reusable Oracle ADF libraries. Developers who want extra functionality with existing Oracle ADF Faces components or who are building a composite component such as an address field can use the declarative component feature to ensure layout consistency as they reuse components throughout Oracle ADF applications.
This article provides an overview of declarative components in Oracle ADF and provides a hands-on guide that walks through the declarative build process.
May/June 2013 -- Calling Home
One of the core architecture patterns in Oracle Application Development Framework (Oracle ADF) that promotes modular software design is the ability to expose bounded task flows in regions on a page. For a region to make callbacks to the owning page or view at runtime, developers typically use one of the following techniques:
Using contextual events, covered in two previous Oracle Magazine articles (see “Implement Contextual Events” and “Master and Commander”), is the most powerful technique for page-to-region and region-to-region interaction, and it also enables communication with nested regions. However, setting up contextual events is complex, and many developers balk at the unnecessary overhead for simple region communication use cases.The bean reference technique explained in this article is easy to implement and well suited for many region communication use cases, making it an important part of the everyday toolbox of an Oracle ADF developer.
March/ April 2013 -- Catch Me If You Can
Java EE applications such as those you build with Oracle Application Development Framework (Oracle ADF) are based on a layered architecture following the model-view-controller paradigm. In such a layered architecture, each layer can become the origin of an application error that requires handling. As a consequence, error handling should be designed and implemented in all application layers.
Error handling is a large knowledge area, and complete coverage of the topic exceeds the Oracle Magazine article format. To fit the available format, this article covers an overview of error handling in Oracle ADF, followed by hands-on instructions on how to implement custom error handlers on the Oracle ADF Controller layer.
November/ December 2012 -- Master And Commander
An Oracle Application Development Framework (Oracle ADF) region is an aspect of the Oracle ADF Controller that executes bounded task flows in defined layout areas within a view, page, or page fragment, without forcing a refresh of the entire view. Think portlets and you have the right idea.
One common Oracle ADF Region use case that frequently appears on the Oracle Technology Network Oracle JDeveloper forum is a global toolbar or menu bar within a parent view. The goal is to have the global toolbar perform actions, such as data iteration, create/update/delete operations, or context-sensitive help display, on the view displayed in a separate region.
This article will show how to implement this use case by borrowing the idea of the command pattern from object-oriented programming. A command pattern implementation, deployed as an Oracle ADF library, is provided for you to use within your custom development projects.
September / October 2012 -- Consume Early / Consume Often
How to service-enable Oracle ADF Business Components application modules for consumption by SOA and Web services clients
Forward-looking enterprises build applications on a distributed architecture that transparently brings together Web, SOA, collaboration, content, and social networking services for user access from multiple device types (mobile, laptop, and so on).
In my last column (“Service, Please!,” Oracle Magazine, July/August 2012), I showed you how to consume and integrate remote services in an Oracle ADF Business Components application. In this column, I will show you how to expose Oracle ADF Business Components application modules as services for remote use with the primary consumers of such services: Java EE service clients, SOA components, and remote and local Oracle ADF Business Components application modules.
July / August 2012 -- Service Please!
Besides being used in SOA, Web services are a common access pattern in Web application development for remote data queries, application integration, and application departmentalization. Rather than enabling developers to directly access database tables owned by other lines of business, companies can expose the services interface to ensure data integrity and consistent application of business logic on the source data.
In this column, you will learn about the Web services integration options available for Oracle Application Development Framework (Oracle ADF) applications. Stepping through a sample application, you’ll learn how to embed calls from Oracle ADF’s Business Components models into Web services for create, read, update, and delete (CRUD) operations.
May / June 2012 -- Personalized Dashboards
Many enterprise applications being built today require flexible, dashboard-style presentation of visual data—bar charts, graphs, and the like—showing various levels of information at a glance. Flexibility these days also assumes a certain amount of personalization. The panelDashboard component of the Oracle Application Development Framework (Oracle ADF) Faces feature is a JavaServer Faces (JSF) layout container that Oracle ADF developers can use to implement such information dashboards.This column will teach you how to change the Oracle ADF Faces panelDashboard component default layout behavior so that users can reorganize information areas according to their needs. You’ll also learn how to persist the user’s changes to the UI beyond the current session by configuring Oracle Fusion Middleware’s Oracle Metadata Services (MDS) feature in conjunction with the Oracle ADF Security feature so that the user’s personalized UI is displayed whenever that person logs in. (Note: hands-on requires JDeveloper 22.214.171.124 for MDS to work properly)
March / April 2012 -- A Template With Behavior
This column provides an overview of the Dynamic Tabs UI Shell template and illustrates its key concepts through a sample application. Although the sample application doesn’t implement all of the template’s public APIs, it gives you a starting point for exploring how and when to use it.
January / February 2012 -- Security for Everyone
Protect your Oracle ADF applications from unauthorized access using Oracle ADF Security. Get an overview, introduction and running sample of ADF Security in Oracle JDeveloper 126.96.36.199
November / December 2011 -- Put On A Friendly Faces
Build a custom look and feel for your Oracle ADF Faces applications using the new ADF Skin Editor in Oracle JDeveloper 11g R2. Learn about the new skin editor, skinning strategies and work flow. Download Summit ADF with a red look and feel
September / October 2011 -- All Aboard
Build train models for navigation in bounded task flows. This article shares some hints and tips for programmatic train navigation and customization. The bounded task flow train is a powerful feature that gains even more power if you understand the model behind.
July / August 2011 -- Advanced List Interaction
Use model-driven LOVs in Oracle ADF to implement smart lists with autosuggest behavior. Model driven ADF Business Components list of values explained by example.
May / June 2011 - Implement Contextual Events
Use Oracle Application Development Framework’s Contextual Events feature for inter-ADF Region communication. To many developers, contextual events is a secret treasure that they have problems to fully understand. This sample explains step-by-step how to use contextual events with ADF Regions
|109.||How-to further filter master-detail behavior in ADF BC NEW||ZIP|
|108.||How-to launch a popup upon rendering of a page fragment in a region using JSF 2|
|107.||How-to enforce LOV Query Filtering||ZIP|
|106.||Drag-and-drop reordering of table rows||ZIP|
|105.||How to auto-dismiss af:popup dialogs||ZIP|
|104.||How to show a confirmation dialog on panel tab selection||ZIP|
|103.||How-to edit an ADF form with data dragged from an ADF Faces table||ZIP|
|102.||How to dynamically enable or disable list items of an ADF bound select many checkbox component||ZIP|
|101.||How-to drag-and-drop data from an af:table to af:tree||ZIP|
|100.||How-to undo table row selection in case of custom validation failure||ZIP|
|099.||Multi Table Row Selection for Deferred Delete||ZIP|
|098.||How-to use multi select components in table filters||ZIP|
|097.||How-to defer train-stop navigation e.g. for custom form validation||ZIP|
|096.||How to invoke a table selection listener from Java|
|095.||How-to Navigate to Printable Pages||ZIP|
|094.||ADF Region Return Value Strategy||ZIP|
|093.||Put a different Look to your Train Stops||ZIP|
|092.||Caching ADF Web Service results for in-memory filtering||ZIP|
|091.||How-to create new lookup data from a list of values select list||ZIP|
|090.||How-to filter ADF bound lists||ZIP|
|089.||How-to conditionally switch model driven LOV in ADF forms and tables||ZIP|
|088.||How-to extend and nest page templates in Oracle JDeveloper 11g R2|
|087.||How-to improve LOV performance with shared AM in ADF BC||ZIP|
|086.||Reading boilerplate images and icons from a JAR|
|085.||af:query component complex field validation||ZIP|
|084.||Dynamically show or hide af:treeTable columns dependent on the disclosed node||ZIP|
|083.||How-to create bi-directional synchronization between a tree and an input form component||ZIP|
|082.||How-to programmatically navigate ADF train models||ZIP|
|081.||How-to create master-detail behavior using af:panelTabbed and DVT graph components||ZIP|
|080.||HashMap strategy for dynamically setting the sequential property in ADF Controller train models|
|079.||Strategy for implementing global buttons in a page template||ZIP|
|078.||How-to programmatically expand trees and tree table components upon initial rendering and later||ZIP|
|077.||Handling the af:dialog Ok and CANCEL buttons||ZIP|
|076.||Extending ADF Security to check ADF BC Entity attribute insert permissions||ZIP|
|075.||How-to select multiple parent table rows and synchronize a detail table with the combined result||ZIP|
|074.||Hands-on: How to use the ADF URL Data Control for parametrized queries||ZIP|
|073.||Hands on - Creating a search form using a POJO WS and the Web Service Data Control||ZIP|
|072.||Hands-on & How-to: ADF application with EJB WS, WS proxy client and POJO Data Control||ZIP|
|071.||How-to integrate Java Applets in Oracle ADF Faces pages||ZIP|
|070.||How-to build ADF dependent list boxes with Web Services||ZIP|
|069.||How-to create a custom LOV using bounded task flows||ZIP|
|068.||How-to solve the known range change event problem in ADF contextual events||ZIP|
|067.||How-to create a query form in a popup dialog||ZIP|
|066.||How-to color-highlight the bar in a graph that represents the current row in a collection||ZIP|
|065.||Active Data Service Sample - Twitter Client||ZIP|
|064.||How-to implement a Select Many Shuttle with pre- selected values||ZIP|
|063.||How-to save - "print" - DVT graphs to a file||ZIP|
|062.||How-to use the af:autoSuggestBehavior component tag with ADF bound data sources||ZIP|
|061.||How-to text search in a rendered ADF bound tree||ZIP|
|060.||How-to implement drag and drop for an ADF Faces table||ZIP|
|059.||How-to filter ADF bound tables by date range (JDeveloper 188.8.131.52)||ZIP|
|058.||How-to use the optimized component search in Oracle ADF Faces||ZIP|
|057.||How to build master-detail behavior with DVT component master||ZIP|
|056.||How-to handle and respond to mouse double clicks in ADF Faces tables||ZIP|
|055.||How-to build a single select component with images in select items||ZIP|
|054.||Search form using ADF WS Data Control and Complex input types||ZIP|
|053.||Refresh a bounded task flow displayed as an ADF Region in a popup||ZIP|
|052.||How-to deploy bounded task flows in an ADF library||ZIP|
|051.||How-to scroll ADF tables using an alphabetic index menu||ZIP|
|050.||How-to create and synchronize edit forms for tree node entries||ZIP|
|049.||How-to skin ADF Faces component label|
|048.||XML Menu Model site menus protected with ADF Security and JAAS||ZIP|
|047.||How-to build a select one choice displaying hierarchical selection data||ZIP|
|046.||Building a search form that displays the results in a task flow||ZIP|
|045.||How-to base a router decision on the outcome of a method execution|
|044.||How-to restrict the list of values retrieved by a model driven LOV|
|043.||Integrate remote task flows in your ADF applications (POJO DC Example)||ZIP|
|042.||Dynamically change the progress bar color according to its current value||ZIP|
|041.||How-to conditionally prevent dialogs from closing|
|040.||Partial form submit using af:subform and ADF||ZIP|
|039.||How-to declaratively launch a bounded task flow in a lightweight popup||ZIP|
|038.||How-to build an editable tree with the POJO Data Control||ZIP|
|037.||How-to build pagination into ADF POJO Data Control||ZIP|
|036.||Setting control hints on POJO entities using the ADF Bean DataControl||ZIP|
|035.||How-to pass values from a parent page to a popup dialog|
|034.||Passing additional arguments to a JS function with af:clientAttribute|
|033.||How-to open a Bounded Task Flow in a new Browser Tab||ZIP|
|032.||Creating a tree table from a single View Object and access selected rows||ZIP|
|031.||Metadata Services (MDS) Example: Power User vs. Normal User||ZIP|
|030.||How-to intercept and modify table filter values||ZIP|
|029.||How-to build Oracle Forms style List-of-Values in ADF Faces|
|028.||How-to scroll an ADF bound ADF Faces Table using a Keyboard Shortcut||ZIP|
|027.||Showing a glasspane and splash screen for long running queries||ZIP|
|026.||How-to access the selected row data in ADF bound TreeTable and Tree|
|025.||Building a generic SelectionListener for ADF trees and ADF BC models|
|024.||How-to build a reusable toolbar with Oracle ADF Declarative Components|
|023.||How-to build a Generic Selection Listener for ADF bound Tables||ZIP|
|022.||How-to extend the default ADF Faces Component Message Bundle|
|021.||How-to initially expand tree nodes in ADF bound tree & tree table||ZIP, ZIP|
|020.||Expanding an af:tree node by clicking onto the node label|
|018.||ERRATA: Oracle Fusion Developer Guide|
|017.||How-to invoke contextual events from a DVT graph component||ZIP|
|016.||How-to customize the ADF Faces Table Filter||ZIP|
|015.||How-to configure a custom splash screen in ADF Faces||ZIP|
|014.||Custom JAAS Permissions in a ADF Security to implement UI security|
|013.||How-to declaratively create new table rows based on existing row content|
|012.||How-to copy/paste the value of a table cell to other - selected - table rows||ZIP|
|011.||ADF Faces RC - How-to use the Client and Server Listener Component||ZIP|
|010.||How-to create a character input counter for text fields||ZIP|
|009.||How-to Configure the ADF Faces Carousel Component with ADF||ZIP|
|008.||How-to use Captcha with ADF Faces and Oracle ADF||ZIP|
|006.||How to cancel an edit form, undoing changes in Java||ZIP|
|005.||How-to bind custom declarative components to ADF||ZIP|
|003.||Advanced Expression Language Techniques|
|002.||ADF programmer's cheat sheet 2010|
|001.||Accessing attributes of declarative component||ZIP|
The Oracle JDeveloper forum (https://community.oracle.com/community/groundbreakers/java/java_development_tools/application_development_in_java/jdeveloper_and_adf) is in the Top 5 of the most active forums on the Oracle Technology Network (OTN). The ADF Code Corner "Oracle JDeveloper OTN Harvest" series was a monthly effort to turn the knowledge exchange on OTN into an interesting read for developers who enjoy little nuggets of wisdom.
This series has been discontinued in June 2012 and is replaced by the OTN Harvest blog: https://blogs.oracle.com/jdevotnharvest/ , the ADF Architect Square (http://www.oracle.com/application-development/technologies/adf/architecturesquare.html) website and Oracle Magazine Articles.
The existing Oracle JDeveloper OTN Harvest articles (10/2010 - 06/2012) remain online.
June 2012 (PDF)
April 2012 (PDF)
February 2012 (PDF)
November 2011 (PDF)
October 2011 (PDF)
August 2011 (PDF)
June 2011 (PDF)
April 2011 (PDF)
October 2010 (PDF)
May 2012 (PDF)
March 2012 (PDF)
December 2011 / January 2012 (PDF)
September 2011 (PDF)
July 2011 (PDF)
May 2011 (PDF)
March 2011 (PDF)
January 2011 (PDF)
November 2010 (PDF)
February 2011 (PDF)
December 2010 (PDF)