Reading train stop display names from a resource bundle
- by Frank Nimphius
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
Normal
0
false
false
false
false
EN-US
X-NONE
X-NONE
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin:0in;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman","serif";}
In Oracle JDeveloper 11g R1, you set the display name of a train
stop of an ADF bounded task flow train model by using the Oracle JDeveloper
Structure Window.
To do so
Double-click
onto the bounded task flow configuration file (XML) located in the
Application Navigator so the task flow diagram open
In the task flow diagram, select the view activity
node for which you want to define the display name.
In the Structure Window., expand the view
activity node and then the train-stop node therein
Add the display name element by using the
right-click context menu on the train-stop node, selecting Insert inside train-stop > Display Name
Edit the Display Name value with the Property
Inspector
Following the steps outlined above, you can define static display
names – like "PF1" for page fragment 1 shown in the image below - for
train stops to show at runtime.
In the following, I explain how you can change the static
display string to a dynamic string that reads the display label from a resource
bundle so train stop labels can be internationalized.
There are different strategies available for managing
message bundles within an Oracle JDeveloper project. In this blog entry, I decided
to build and configure the default properties file as indicated by the projects
properties. To learn about the suggested file name and location, open the JDeveloper project properties (use a right mouse click on
the project node in the Application Navigator and choose Project Properties.
Select the Resource
Bundle node to see the suggested name and location for the default message
bundle. Note that this is the resource bundle that Oracle JDeveloper
would automatically create when you assign a text resource to an ADF Faces component
in a page.
For the train stop display name, we need to create the
message bundle manually as there is no context menu help available in Oracle JDeveloper. For this, use a right mouse click on the JDeveloper project
and choose New |
General | File from the menu
and in the opened dialog.
Specify the message bundle file name as the name looked up
before in the project properties Resource
Bundle option. Also, ensure that the file is saved in a directory structure that matches the package structure shown in the Resource
Bundle dialog. For example, you would save the properties file in the View
Project's src >
adf > sample directory if the package structure was "adf.sample" (adf.sample.ViewControllerBundle).
Edit the properties file and define key – values pairs for
the train stop component. In the sample, such key value pairs are
TrainStop1=Train Stop 1
TrainStop2=Train Stop 2
TrainStop3=Train Stop 3
Next, double click the faces-config.xml
file and switch the opened editor to the Overview
tab. Select the Application category
and press the green plus icon next to the Resource
Bundle section.
Define the resource bundle Base Name as the package and properties file name, for example
adf.sample.ViewControllerBundle
Finally, define a variable name for the message bundle so
the bundle can be accessed from Expression Language. For this blog example, the name
is chosen as "messageBundle".
<resource-bundle>
<base-name>adf.sample.ViewControllerBundle</base-name>
<var>messageBundle</var>
</resource-bundle>
Next, select the display-name
element in the train stop node (similar to when creating the display name) and
use the Property Inspector to change the static display string to an EL expression
referencing the message bundle. For example:
#{messageBundle.TrainStop1}
At runtime, the train stops
now show display names read from a message bundle (the properties file).