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

Reply via email to