Skip to main content

Posts

JET 4.1 : How to Setup a Functional Application Architecture

This week I had some interesting Oracle JET discussions with a couple of developers at one of our customers. One of the things was regarding the inline use of CSS that I found in the Views of the Modules. I didn't think that made sense so, after asking, I was told that this was because they did not find a way to use specific CSS per module. The question was if it was possible to use one specific CSS per Module in an Oracle JET Application. Besides that I thought it might also be useful to put everything that belongs to a module in its own folder. That could help developers to get a better understanding of the structure of the application. Besides that it is more like the structure of Oracle JET Composite Components where also everything that belongs to that component is under one folder.

Obviously this should be possible by explicitly loading a CSS in the view of the module. Geertjan already blogged about it : https://blogs.oracle.com/geertjan/referencing-css-from-an-oracle-jet-m…
Recent posts

JET 4.1 : How to use toastr to show non-blocking notifications

Today I had to implement a mechanism to show user notifications in the Oracle JET application that I am currently working on. One could show a simple popup to tell a user that changes have been saved, or even use a javascript alert to do that. There are also other, more sophisticated solutions that work pretty well. These can be found here:
http://jsjim.blogspot.nl/2016/05/toast-and-growl-notifications-with.htmlhttp://likeahouseafire.com/2016/05/05/popup-message-box-for-jet/ The authors mention "toast" like notifications. Although the implementations in the above mentioned blogposts work fine, I wondered if there wasn't an easier, more configurable solution. 
After a bit of searching I found the toastr javascript library, whose purpose is exactly what I was looking for: Provide non-blocking notifications that can be configured as needed.
In the remaining part of this post I will describe how to add toastr to your JET application and how to use it so you get really nice t…

ADF 12.2.x : Conditional Showing Message Instead of List of Values Popup

Today I had to fix an issue in one of our ADF applications. For those of you working with ADF (as I do too occasionally) this might be valuable, so I decided to share this. The application is based on an old Oracle Forms applications and I had to implement the following functionality:

FRM-41830 : List of Values contains no entries.

In other words (more ADF like) : If you are about to render a List of Values and that List of Values contains no rows, just show a message instead of showing the List of Values.

In this post I will describe how I was able to implement this although it turned out to be a challenge.
Below are the steps that I took. Note that the Application can be downloaded from GIT.

1) I use a UI pattern where we use readonly table and do edits in a popup. That means that any List of Values will add an additional popup to the UI.



2) The List of Values that I use in this sample only shows entries where the minimum salary is less then the employees current salary. Not that …

MAF: Be careful how you build your APK

So that has been a while.... 1 year and 1 day to be exact.
Today I encountered a really weird issue in MAF. Yes, we are still using that in some projects. We are using 2.4.1 to build an app for a company that needs offline storage and sync. As MAF has this incorporated in the framework, and the customer has lots of ADF developers, the choice for MAF was made.

Anyway, back to the issue.

I was building a new feature and was heavily debugging the app. Next I committed my changes to GIT and pushed them to our GIT server. My stuff was working great :-)
Couple of hours later I was getting complaints that people were not able to run the app that was built from the latest version in GIT....

The app started, but hung on the splash screen..... It took me a while to figure out what was happening, and only after analysing the log very carefully I found a possible cause.


So I figured that the Debug mode could be the cause of the app hanging. I checked my maf.properties file, and there it was : ja…

OTN Appreciation Day: Programmatically Dismiss Popup

A couple of years ago I blogged about fading user feedback.  Also Duncan Mills had a solution for this, as did Frank Nimphius.

Just recently I was triggered by a blogpost of Shay Schmeltzer that in ADF 12.2.1.1 this can be done completely different and 100% declarative. Where Shay's example is declarative, in this blogpost I describe how to do the same when this popup is created programmatically.

To explain this, first of all I need to show you how to invoke a popup programmatically. In order to do this we need to have a popup component defined on the page. To have access to the popup in java code, we need to bind the popup to a managed bean:

1: <af:popup id="p1" animate="true" binding="#{backingBeanScope.utilBean.dismissablePopup}" > 2: <af:panelGroupLayout id="pg1" layout="horizontal" halign="center" styleClass="AFStretchWidth"> 3: <af:image source="#{resource[…

ADF 12.x: Changing the List Of Values "No rows to display" text

In this post I describe how I implemented an interesting Use Case where the customer wanted to have an alternate message in the LOV when there is no data found. We all know how this can be changed in an af:table component by simply changing the emptyText property. In a List of Values, this works 'slightly' different.

Lets start with the basics

By default you will see the following List Of Values, telling you that no data was found:


However in the case of my customer, they were not happy with the text. So I had to come up with something else. That is interesting, because the ListOfValues is an ADF component in itself and the individual components inside the LOV cannot be manipulated by means of properties. I had to find a way to get access to the table component inside the List Of Values.
The way to do this has been described by Frank Nimphius, a long while ago, in his Forum Harvest posts. To be more specific, it is the harvest of November 2010, section "How-to define acces…

ADF 12c : Using Jasper Reports en JasperSoft Studio 6.1; What Libraries do you need?

Over the last couple of years, or better in the last decade I have implemented several reporting solutions with Jasper Reports in ADF. I did that in ADF 10g, ADF 11.1.1.x, ADF 11.1.2.x and ADF 12.1.x
I also used several version of Jasper Reports. There is a whole lot of documentation, blogposts and presentations available. So when today I got a request from one of my customers to make a setup for the implementation of Jasper Reports 6.1 in ADF 12.1.3 I did not expect any problems. Boy was I wrong.

Here is the Story
With all the knowledge from the past, I decided to follow the known steps.
1) Download iReport Designer,
2) Build a report in iReport
3) Create an ADF application
4) Add the necessary libraries to use the report
5) Call the report from a button via a Managed Bean

Step 1
In the past I used iReport designer to build the reports. When you go to the download site of iReport designer you now see an interesting message.


So I took this serious and decided not to use iReport Designer…