[jboss-user] [JBoss Seam] - Trinidad/TreeTable and how to determine selected rows
chane
do-not-reply at jboss.com
Fri Oct 12 00:23:39 EDT 2007
I am using the Trinidad TreeTable component. We present the component and the user can select a number of rows. When an commandButton is selected, we are trying to figure out a good way to get the selected rows in our method call.
Here's what we have:
Facelets fragment
|
| <tr:form id="frm">
| <tr:messages/>
|
| <tr:panelHorizontalLayout>
| <f:facet name="separator"><tr:spacer width="8px"/></f:facet>
| <tr:panelHeader text="Courses">
| <tr:panelButtonBar>
| <tr:commandButton text="Save" action="#{lister.save}" id="btn_save"/>
| </tr:panelButtonBar>
| </tr:panelHeader>
|
| </tr:panelHorizontalLayout>
| <tr:treeTable var="foo"
| value="#{lister.tree}"
| rowSelection="multiple"
| selectionListener="#{lister.selectionBindingMethod}">
| <f:facet name="nodeStamp">
| <tr:column>
| <f:facet name="header">
| <tr:outputText value="Name"/>
| </f:facet>
| <tr:outputFormatted value="#{foo.name} : #{foo.type} : #{foo.id}"/>
| </tr:column>
| </f:facet>
|
| </tr:treeTable>
| </tr:form>
|
And the Seam component is:
| @Name("lister")
| @Stateful
| @LoggedIn
| public class CourseLister implements ICourseLister {
|
| TransferObject root;
| private TreeModel tree;
|
| public String save(){
| System.out.println("SAVE DONE>>>>");
| return null;
| }
|
| public String showCourses(){
| //<snip creation of a transfer object that contains the tree/>
|
| //convert the root object into a Trinidad TreeModel
| tree = new ChildPropertyTreeModel(root, "children");
|
| return "viewList";
| }
|
| public void selectionBindingMethod(SelectionEvent event){
| System.out.println("selectionBindingMethod["+event+"]");
|
| UIXCollection table = (UIXCollection)event.getSource();
|
| for(Iterator<Object> i = ((UIXTree)table).getSelectedRowKeys().iterator(); i.hasNext(); ){
| Object n = i.next();
| AppUtils.LOG.fatal("KEYSET ITERATION["+n+"] class["+n.getClass().getName()+"]");
|
| table.setRowKey(n);
| TransferObject to = (TransferObject)table.getRowData();
| }
| }
|
| public TreeModel getTree(){
| AppUtils.LOG.fatal("GET TREE............");
| return tree;
| }
| }
|
|
Since we can not bind the tree component to the class (this is a conversation scoped bean), we are using the selectionListener.
However, the listener is not getting called until *after* the commandButton lister.save action is called (that is the button that is pressed). Therefore, I don't have the information in the save method about what rows are selected.
Thoughts on other approaches to try?
Seam 1.2.p1
MyFaces
jboss 4.0.4
Thanks,
Chris....
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4094352#4094352
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4094352
More information about the jboss-user
mailing list