The core of the problem is that even though the actual list instance that is
being wrapped did not change, the code outjects a new wrapper. If the code is
updated to preserve the existing wrapper if the underlying wrapped data is not
changed then the problem goes away. (This is the fix proposed in
http://jira.jboss.com/jira/browse/JBSEAM-308)
Brief overview of the flow that occurs :
Decode Phase:
UIInput decodes itself.
UIData grabs the DataModel (instance 1) via the value binding and caches it
then decodes each row.
UpdateModel Phase:
UIInput calls setText via value binding.
Injection -- Existing DataModel (instance 1, the same that UIData is
caching) is injected into FooBean
Outjection -- The list backing the datamodel does not change but a new
wrapper is created and outjected (instance 2)
UIData iterates over its cached DataModel(instance 1)
InvokeApplication Phase
UIData fires the its ActionEvent, sets the appropriate row on the cached
DataModel (instance 1).
UICommand calls dummy via method binding
Injection -- Existing DataModel (instance 2, which was oujected because of
call to setText) is injected along with its selection (currently row 0, as the
UIData set the row on instance 1 instead of instance 2)
Outjection -- The list backing the datamodel does not change but a new
wrapper is created and outjected (instance 3)
UIData caches its DataModel reference
If any components are caching the outjected value (which is the case with a
UIData) they wont be working on the "current" value in the contexts. Later when
injection occurs the "current" value (which is no longer the same as the
instance
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3972955#3972955
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3972955
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user