You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Jose Luis Freire (JIRA)" <de...@myfaces.apache.org> on 2006/07/08 00:28:30 UTC

[jira] Commented: (MYFACES-1357) commandButton inside datatable doesn't process action

    [ http://issues.apache.org/jira/browse/MYFACES-1357?page=comments#action_12419793 ] 

Jose Luis Freire commented on MYFACES-1357:
-------------------------------------------

Sorry. Forgot to say I'm using facelets 1.1.11.

> 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