First, this is Seam 1.2Patch1 on Jboss 4.0.5.
In a nutshell, when I have a h:commandLink in a dataTable backed with a List,
now matter which row's "clickable link" I select, the value in the variable
annotated as @DataModelSelection is always the first element in the list.
In my SFSB I have the following defined:
| @DataModelSelection(value="mappedColumns")
| protected FeedMappingColumn columnToDelete;
|
| @DataModel
| public List<FeedMappingColumn> getMappedColumns() {
| List<FeedMappingColumn> columns = new
ArrayList<FeedMappingColumn>();
| columns.addAll(mappedColumns.values());
| return columns;
| }
|
basically translating a map into a list for display purposes.
The xhtml is as follows:
| <rich:dataTable id="mappedColumns" value="#{feedMapping.mappedColumns}"
| var="column">
| <h:column>
| <f:facet name="header">
| <h:outputText value="Column Number" />
| </f:facet>
| #{column.rawColumn.columnNumber}
| </h:column>
| <h:column>
| <h:commandLink value="del"
action="#{feedMapping.removeMapping}"/>
| </h:column>
| </rich:dataTable>
|
and #{feedMapping.removeMapping} looks like this:
| public void removeMapping() {
| int columnNumber =
columnToDelete.getRawColumn().getColumnNumber();
| info("Deleting column #0. columnToDelete instance is #1",
columnNumber, columnToDelete);
| FeedMappingColumn column = mappedColumns.remove(columnNumber);
|
| // make sure it's already mapped. If not this is a programming
error
| assert column != null : "Column [" + columnNumber + "] isn't
mapped. Shouldn't be presented with unmap option";
| assert column.getMappingCdmField() != null : "Column [" +
columnNumber + "] is a mapped column but doesn't have a CdmField";
|
| // add the cdmField back to the list of available ones
|
remainingCdmFields.put(column.getMappingCdmField().getCdmField(),column.getMappingCdmField());
| column.setMappingCdmField(null);
| unMappedColumns.put(columnNumber, column);
| }
|
I've been over the logic many times this afternoon, and I don't think it's a
logic error. And I just stepped through Seam's DataModelSelector class, and
it's getSelection() method in the debugger. After I click on for instance the
last row in the list, I see that the selected value is indeed whatever happens
to be the first item in the list.
Any ideas? I suspect it's a bug in the DataModel stuff, but want to get
feedback before submitting something in Jira.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4026828#4026828
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4026828
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user