Friday, November 18, 2011

Adding multiple times set of adf components from backing bean

This is an requirement I had in my project, I would like to share this.
This requirement I solved with help of Frank. The requirement is as follows,

There are five fields say, Input text, InputDate and so on. And an ADD button.
Initially I am not showing any the components in the page. When I click on ADD button I have to show the pages. Similarly I have to add one more set of pages when I click ADD button. Like this I will add as many as I need.

Let me tell you the steps

1. Create a managed bean that exposes a HashMap property. The HashMap is of type e.g. Map

2. To create a new set of fields, add a new entry to the HashMap and refresh the af:formLayout. The af:formLayout contains and af:forEach that you use
to iterate as often as you have entries in the HashMap. Each text field you bind to #{bean.HashMapProperty['key'].attribute}, for example
#{bean.HashMapProperty['key'].FirstName}
#{bean.HashMapProperty['key'].LastName}
#{bean.HashMapProperty['key'].EmployeeId}


3. When the user updates a field, the HashMap is updated based on the "key"

4. The managed bean should be in viewScope and referenced from the field's value property

5. Finally, like this