Hi

It seems there is a bug inside _setRowIndex() line 714:

_initialDescendantComponentState = saveDescendantComponentStates(this,
false, false);

should be

_initialDescendantComponentState = saveDescendantComponentStates(this,
true, true);

Since all content of a composite component is inside a facet, the
state for that facet is not saved and it should be.

A fast workaround is wrap all content of ui:repeat inside a
h:panelGroup. (not tested yet). Please create the issue and I'll fix
it.

regards,

Leonardo Uribe

2012/4/16 Mark Struberg <[email protected]>:
> Hi Leo!
>
> Did you also try the stuff with composite components inside ui:repeat?
>
> Default components seem to work, but composite components are probably broken.
>
>
> Buett will upload a sample code later today.
>
> LieGrue,
> strub
>
>
> ----- Original Message -----
>> From: Leonardo Uribe <[email protected]>
>> To: MyFaces Discussion <[email protected]>
>> Cc:
>> Sent: Monday, April 16, 2012 6:32 PM
>> Subject: Re: Ajax update of a composite component within ui:repeat doesn't 
>> work
>>
>> Hi
>>
>> There was two issues solved in 2.1.7 related to ui:repeat:
>>
>> https://issues.apache.org/jira/browse/MYFACES-3415
>>
>> [ui:repeat] field value disappears if validation error exists on current site
>>
>> https://issues.apache.org/jira/browse/MYFACES-3463
>>
>> Refactor UIRepeat code to implement PSS algorithm like UIData and fix
>> state behavior
>>
>> The code taken from UIData has been already tested and there are some
>> junit tests for ui:repeat, so in theory it should work.
>>
>> regards,
>>
>> Leonardo Uribe
>>
>> 2012/4/16 Marcus Büttner <[email protected]>:
>>>  Hi,
>>>
>>>  This following example works with MyFaces 2.1.6 but not with 2.1.7.
>>>
>>>  mycc.xhtml:
>>>  <cc:interface>
>>>     <cc:attribute name="state"
>> type="ExampleModel.State"/>
>>>  </cc:interface>
>>>
>>>  <cc:implementation>
>>>     <h:selectBooleanCheckbox
>> value="#{cc.attrs.state.state}">
>>>         <f:ajax execute="@this" render="@form"/>
>>>     </h:selectBooleanCheckbox>
>>>     <h:outputText value="State: #{cc.attrs.state.state}"/>
>>>  </cc:implementation>
>>>
>>>
>>>  example.xhtml:
>>>  <h:form id="form">
>>>     <ui:repeat value="#{example.states}"
>> var="state">
>>>         <my:mycc state="#{state}"/>
>>>     </ui:repeat>
>>>     <my:mycc state="#{example.state}"/>
>>>  </h:form>
>>>
>>>  In debugger I saw the submitted value of the checkbox is set but this state
>>>  is overridden a little bit later by
>>>  UIRepeate#restoreDescendantComponentStates method which is triggered by
>>>  UIRepeat#setIndex which is called by UIRepeat#visitTree.
>>>
>>>  Any ideas?
>>>
>>>  Regards,
>>>  Marcus
>>

Reply via email to