You can download developed application - GlobalDynamicButtons.zip. This sample is based on two Entity objects - Countries and Locations, and provides two JSPX pages based on template JSPX. Button components for both pages are generated dynamically. Here is a navigation flow implemented in current sample:
Both of the pages are based on template. This template defines facet for data-bound components and empty toolbox for dynamically generated buttons:
You can notice, that toolbox contains two toolbar components, button objects will be added to those toolbars. Toolbox is binded to managed bean, this allows to initialize toolbox component on the page:
Next step is to bind BeforePhase property of f:view tag contained on the pages to the same managed bean where dynamic buttons are generated:
#{dynamicGenerator.addButtons} method generates dynamic buttons according to current page, information about current page is accessed through phaseEvent, for example:
Buttons are binded to actions defined in actual page definition using ActionListener, disabled property is also set programatically:
If button is not binded to page definition, and is is related to navigation flow, action expression is set:
Main advantage of described approach is that it allows to have the same code for the same actions in different pages - Commit action, for example. And only what you need to care about, is to define actions in page definition files. Actions for countries page:
Actions for locations page:
On runtime, all buttons specific to current page are generated:
First and Previous buttons are disabled, since first entry is shown, Locations button opens locations from current country:
Different set of buttons is generated and by default there are no locations defined for Argentina, we can create a couple:
When Save button is pressed, records are stored to database and sequence values for LocationId column are assigned:
0 comments:
Post a Comment