commandButton inside datatable doesn't process action
-----------------------------------------------------

         Key: MYFACES-1357
         URL: http://issues.apache.org/jira/browse/MYFACES-1357
     Project: MyFaces Core
        Type: Bug

    Versions: 1.1.3    
 Environment: Windows XP SP2, JDK 1.5 Update 7, TomCat 5.5.17, MyFaces 1.1.3
    Reporter: Jose Luis Freire


Consider a simple datatable:

                                <h:dataTable 
                                        value="#{userProfile.associations}"  
var="association">
                                        <h:column>
                                                <h:commandButton 
action="#{userProfile.selecting}" value="#{association.entityCodeTo}" />
                                        </h:column>
                                        <h:column>
                                                <h:outputText 
value="#{association.dateFrom}"></h:outputText>
                                        </h:column>
                                </h:dataTable>

Now consider that the list returned by userProfile.associations is null (or an 
empty ArrayList) in the first time it get's called (in ApplyRequestValues 
phase), and is fully populated in the RenderResponse phase (because it depends 
on settings populated in the UpdateModel phase).

When the commandButton is pressed, the method in the action 
(userProfile.selecting) will not be called.

The only workaround is implementing the getAssociations like this:

public List<EntityAssociationData> getAssociations() {
                if (business rule is populated)  {
                                associationData = getAssociationsFromSystem();
                } else 
                        if (associationData == null) {
                                /* We must always return a arraylist with at 
least one element */
                                associationData = new 
ArrayList<EntityAssociationData>();
                                EntityAssociationData entityAssociationData = 
new EntityAssociationData();
                                associationData.add(entityAssociationData);
                }
 }

We *really* need that bogus entry, so the ArrayList has a size > 0, or else the 
userProfile.selecting() method will never be called.



-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to