it uses:
- implements ActionListener
- public void processAction(ActionEvent anEvent) throws
AbortProcessingException
Cordialmente.
William Diaz Pabón
Tunja - Boyacá - Colombia
From: "HENRY Pierre" <[EMAIL PROTECTED]>
Reply-To: "MyFaces Discussion" <[email protected]>
To: "MyFaces Discussion" <[email protected]>
Subject: RE: selectOneMenu inside of dataTable
Date: Fri, 11 May 2007 09:05:30 +0200
Somebody, please ?
-----Message d'origine-----
De : HENRY Pierre [mailto:[EMAIL PROTECTED]
Envoyé : jeudi, 10. mai 2007 15:56
À : [email protected]
Objet : selectOneMenu inside of dataTable
Hi,
I have a use case where I need to delete some "Location" objets.
"Events" objects are bound to these locations (parent-child, where the
location is the parent).
So when I try to delete a location that has children, I display a dataTable
of all the events children. In each line of the dataTable, I have a combo
(selectOneMenu) with the different possible actions :
delete the children, or bind it to another "Location", so all the other
locations are in the combo box. When I submit the form, I check what is the
action and process all the events accordingly. If the value is "delete" I
delete the event, if the value is "dummy" I don't do anything, and if the
value is an id, I move the event to the location matching the id.
The list of events, is a List property of the "locationForm" session
managed bean :#{locationForms.events}.
The selectItems list for the other locations is a property ot the
"locationForm" too.
The value of the selectOneMenu is a String property of the Event class (I
know, Event is a model class and shouldn't contain any UI stuff, but right
now I just need it to work).
Here is what the jsp look like :
<h:form>
...
<t:dataTable var="event" value="#{locationForm.events}"
rowClasses="standardTable_Row1,standardTable_Row2">
<h:column >
<h:outputText value="#{event.beginDate}" /> </h:column> <h:column>
<h:outputText value="#{event.eventType}" /> </h:column> <h:column>
<h:outputText value="#{event.titleAbbreviated}"/>
</h:column>
<h:column>
<h:selectOneMenu styleClass="actionSelectInput"
value="#{event.actionOnChild}" >
<f:selectItem itemLabel="choose an action..." itemValue="dummy"/>
<f:selectItem itemLabel="------------------------" itemValue="dummy"/>
<f:selectItem itemLabel="Delete" itemValue="delete" /> <f:selectItem
itemLabel="------------------------" itemValue="dummy"/> <f:selectItem
itemLabel="Move to :" itemValue="dummy"/> <f:selectItem itemLabel=" "
itemValue="dummy"/> <f:selectItems
value="#{locationForm.moveChildrenItems}"/>
</h:selectOneMenu>
</h:column>
</t:dataTable>
...
<h:commandButton
action="#{locationForm.processChildren}"
immediate="true"
value="#{bundle.action_ok}"
styleClass="inputText">
</h:commandButton>
...
</h:form>
The page renders fine, with the selects and everything. But when I submit
the form, the values of each event's "actionOnChild" property are not
updated. The setActionOnChil method is not called once on any of the
events.
The processChildren method is executed, but all the "actionOnChild"
values are null;
So am I missing something ? Isn't the value of actionOnChild of each event
in the list supposed to be updated on submit ? If so, please show me how I
can retreive the values of the selectOneMenus.
Let me know if you need more details, snippets of code or whatever.
Thanks,
Pierre
_________________________________________________________________
Las mejores tiendas, los precios mas bajos, entregas en todo el mundo,
YupiMSN Compras: http://latam.msn.com/compras/