Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: 3.3
-
Fix Version/s: 4.0.BETA, EE-3.3.0.GA_P02, 4.0
-
Component/s: ACE-Components
-
Labels:None
-
Environment:Tomcat 7
-
Assignee Priority:P1
-
Salesforce Case Reference:
-
Affects:Compatibility/Configuration
Description
The rowSelectListener method is not executed / silently fails when the ace:dataTable contains cells that fail validation/conversion. According to the ace:datatable tld "Decoding children during feature requests can result in unwanted input submission (during pagination for example), so by default this component suppresses child decoding whenever submitting itself." The rowSelectListener appears to be decoding components in the ace:dataTable.
To re-create this issue, modify dataTableListener.xhtml name column to the following:
<ace:column id="name" headerText="Name">
<h:inputText id="nameCell"
value="#{car.name}"
required="true"
size="7">
<f:ajax execute="@this" render="@this" />
</h:inputText>
</ace:column>
Add a System.out.println to DataTableListener selectListener method.
When you select rows, you will see the selectListener method executed. Empty one of the name cells (which has required="true") and try selecting a row. You will see the row selection style applied in the browser, but the selectListener will not be executed on the server.
To re-create this issue, modify dataTableListener.xhtml name column to the following:
<ace:column id="name" headerText="Name">
<h:inputText id="nameCell"
value="#{car.name}"
required="true"
size="7">
<f:ajax execute="@this" render="@this" />
</h:inputText>
</ace:column>
Add a System.out.println to DataTableListener selectListener method.
When you select rows, you will see the selectListener method executed. Empty one of the name cells (which has required="true") and try selecting a row. You will see the row selection style applied in the browser, but the selectListener will not be executed on the server.
Activity
Brad Kroeger
created issue -
Brad Kroeger
made changes -
Field | Original Value | New Value |
---|---|---|
Assignee | Ken Fyten [ ken.fyten ] |
Ken Fyten
made changes -
Fix Version/s | 3.4 [ 10770 ] | |
Assignee | Ken Fyten [ ken.fyten ] | Nils Lundquist [ nils.lundquist ] |
Assignee Priority | P1 [ 10010 ] |
Arran Mccullough
made changes -
Salesforce Case Reference | 5007000000UaCTLAA3 |
Nils Lundquist
made changes -
Status | Open [ 1 ] | Resolved [ 5 ] |
Resolution | Fixed [ 1 ] |
Repository | Revision | Date | User | Message |
ICEsoft Public SVN Repository | #36628 | Wed Jul 10 17:01:02 MDT 2013 | nils.lundquist | |
Files Changed | ||||
MODIFY
/icefaces3/trunk/icefaces/samples/showcase/showcase/src/main/webapp/resources/examples/ace/dataTable/dataTableSelector.xhtml
|
Ken Fyten
made changes -
Resolution | Fixed [ 1 ] | |
Status | Resolved [ 5 ] | Reopened [ 4 ] |
Affects | Compatibility/Configuration [ 10002 ] |
Nils Lundquist
made changes -
Status | Reopened [ 4 ] | Resolved [ 5 ] |
Resolution | Fixed [ 1 ] |
Ken Fyten
made changes -
Resolution | Fixed [ 1 ] | |
Status | Resolved [ 5 ] | Reopened [ 4 ] |
Assignee | Nils Lundquist [ nils.lundquist ] | Arturo Zambrano [ artzambrano ] |
Ken Fyten
made changes -
Fix Version/s | EE-3.3.0.GA_P02 [ 11371 ] |
Arturo Zambrano
made changes -
Status | Reopened [ 4 ] | Resolved [ 5 ] |
Resolution | Fixed [ 1 ] |
Ken Fyten
made changes -
Fix Version/s | 4.0 [ 11382 ] |
Ken Fyten
made changes -
Status | Resolved [ 5 ] | Closed [ 6 ] |
What Brad is observing is that the selection state change is performed during decode, while the rowSelectListener is broadcast in some later phase. Since a table child input component fails validation, that later event broadcast phase is skipped like all other phases following validation failure, resulting in the selection occurring but no listener being processed.
I will be moving the processing of row selection state changes into the updateModel phase.