RF 4.2.3 and 4.3.1CR1 extendedDataTable multiple row selection produces incorrect selection list
shoyt Mar 8, 2013 2:00 PMWhen the selectionMode="multiple" I am seeing incorrect row selections in the selection binding under specific scenarios. I am checking the selection list in an a4j:ajax listener method. The problem occurs if the table is rendered (e.g. by dragging a column to re-order it) between selecting a first row by clicking and selecting a second row by control-clicking. If the table is not rendered in between selecting the first row and the second row, the problem doesn't occur.
I noticed a difference in the "wq_report_form:wq_param_table:2:wq_LOC_table:si" request parameter when the problem occurs (versus when the problem doesn't occur). This parameter is missing an "x" in the value when the problem occurs. See the following log output:
==============================================================
DOESN'T WORK
==============================================================
Click on row 1:
Params: wq_report_form:wq_param_table:2:wq_LOC_table:si = 1,1|1||x, javax.faces.behavior.event = selectionchange, javax.faces.partial.execute = @component wq_report_form:wq_param_table:2:wq_LOC_table, wq_report_form:wq_param_table:1:wq_SUB_table:si = 1,1|1||x, AJAX:EVENTS_COUNT = 1, javax.faces.partial.render = @component, javax.faces.source = wq_report_form:wq_param_table:2:wq_LOC_table, wq_report_form:wq_param_table:0:wq_CORP_input = 48, wq_report_form = wq_report_form, javax.faces.partial.event = click, wq_report_form:wq_param_table:2:wq_LOC_table:wi = , javax.faces.ViewState = sRlzYYJ/edg4bgWeETVo4LK7vF9bq9ykISb+koCfvFhTvD2wuxHwG8cRw9OWDXFAAxzLSgHKflzjJ34VWOrNASy0X99r17PH/ZbyESb56HRw0qFtdhgVKT1OSk2WPlgl9jTYdw==, wq_report_form:wq_param_table:3:j_id1202755758_517dda59 = lastFullMonth, wq_report_form_SUBMIT = 1, org.richfaces.ajax.component = wq_report_form:wq_param_table:2:wq_LOC_table, wq_report_form:wq_param_table:1:wq_SUB_table:wi = , javax.faces.partial.ajax = true
Selected rows = 1
Change column order, control-click on row 2:
Params: wq_report_form:wq_param_table:2:wq_LOC_table:si = 1,2|2||, javax.faces.behavior.event = selectionchange, javax.faces.partial.execute = @component wq_report_form:wq_param_table:2:wq_LOC_table, wq_report_form:wq_param_table:1:wq_SUB_table:si = 1,1|1||x, AJAX:EVENTS_COUNT = 1, javax.faces.partial.render = @component, javax.faces.source = wq_report_form:wq_param_table:2:wq_LOC_table, wq_report_form:wq_param_table:0:wq_CORP_input = 48, wq_report_form = wq_report_form, javax.faces.partial.event = click, wq_report_form:wq_param_table:2:wq_LOC_table:wi = , javax.faces.ViewState = sRlzYYJ/edg4bgWeETVo4LK7vF9bq9ykISb+koCfvFhTvD2wuxHwG7ZQZxfVJVmCAxzLSgHKflzjJ34VWOrNASy0X99r17PH/ZbyESb56HQUg5yFwRJn9+QfkVROyRlLIdK3VA==, wq_report_form:wq_param_table:3:j_id1202755758_517dda59 = lastFullMonth, wq_report_form_SUBMIT = 1, org.richfaces.ajax.component = wq_report_form:wq_param_table:2:wq_LOC_table, wq_report_form:wq_param_table:1:wq_SUB_table:wi = , javax.faces.partial.ajax = true
Selected rows = 1, 1, 2
==============================================================
Whereas, if the table is not rendered in between row clicks, the problem doesn't occur. Here is the log output when it works properly:
==============================================================
WORKS
==============================================================
Click on row 1:
Params: wq_report_form:wq_param_table:2:wq_LOC_table:si = 1,1|1||x, javax.faces.behavior.event = selectionchange, javax.faces.partial.execute = @component wq_report_form:wq_param_table:2:wq_LOC_table, wq_report_form:wq_param_table:1:wq_SUB_table:si = 1,1|1||x, AJAX:EVENTS_COUNT = 1, javax.faces.partial.render = @component, javax.faces.source = wq_report_form:wq_param_table:2:wq_LOC_table, wq_report_form:wq_param_table:0:wq_CORP_input = 48, wq_report_form = wq_report_form, javax.faces.partial.event = click, wq_report_form:wq_param_table:2:wq_LOC_table:wi = , javax.faces.ViewState = sRlzYYJ/edg4bgWeETVo4LK7vF9bq9ykISb+koCfvFhTvD2wuxHwGzWCFkJOhlZiAxzLSgHKflzjJ34VWOrNASy0X99r17PH/ZbyESb56HTcc9/i3fL1zzfHYRDhpW96FL5k0Q==, wq_report_form:wq_param_table:3:j_id1202755758_517dda59 = lastFullMonth, wq_report_form_SUBMIT = 1, org.richfaces.ajax.component = wq_report_form:wq_param_table:2:wq_LOC_table, wq_report_form:wq_param_table:1:wq_SUB_table:wi = , javax.faces.partial.ajax = true
Selected rows = 1
Change column order, control-click on row 2:
Params: wq_report_form:wq_param_table:2:wq_LOC_table:si = 1,2|2||x, javax.faces.behavior.event = selectionchange, javax.faces.partial.execute = @component wq_report_form:wq_param_table:2:wq_LOC_table, wq_report_form:wq_param_table:1:wq_SUB_table:si = 1,1|1||x, AJAX:EVENTS_COUNT = 1, javax.faces.partial.render = @component, javax.faces.source = wq_report_form:wq_param_table:2:wq_LOC_table, wq_report_form:wq_param_table:0:wq_CORP_input = 48, wq_report_form = wq_report_form, javax.faces.partial.event = click, wq_report_form:wq_param_table:2:wq_LOC_table:wi = , javax.faces.ViewState = sRlzYYJ/edg4bgWeETVo4LK7vF9bq9ykISb+koCfvFhTvD2wuxHwG3euAKwrCSF6AxzLSgHKflzjJ34VWOrNASy0X99r17PH/ZbyESb56HQIEc6Dv/4ewwzQkKtMWopzgId3KA==, wq_report_form:wq_param_table:3:j_id1202755758_517dda59 = lastFullMonth, wq_report_form_SUBMIT = 1, org.richfaces.ajax.component = wq_report_form:wq_param_table:2:wq_LOC_table, wq_report_form:wq_param_table:1:wq_SUB_table:wi = , javax.faces.partial.ajax = true
Selected rows = 1, 2
==============================================================
Any help on this is appreciated.
-
code.txt.zip 659 bytes