I know this is a widely posted question, but I do not manage to find a proposed solution that work for me.
<apex:form id="form2">
<apex:outputPanel id="my_list">
<apex:outputPanel id="testBeforeTable">
<apex:outputPanel id="test2">
<apex:repeat var="group" value="{!myGroups}">
{!group.links}
<div>
<div style="line-height: 25px; display: flex;">
<div style="width: 140px; line-height: 130%; vertical-align: baseline;"> {!group.name + ' : '}</div>
<apex:outputPanel rendered="{!group.list!= null && group.list.size > 1}" layout="none">
<div style="line-height: 130%; vertical-align: baseline;">
<apex:selectList value="{!group.selectedFromList}" size="1" onchange="myFunction()" style="padding-left: 8px; padding-right: 20px; width: 100%; min-width: fit-content; max-width: fit-content;">
<apex:selectOptions value="{!group.myList}"/>
</apex:selectList>
</div>
</apex:outputPanel>
<apex:outputPanel rendered="{!group.links.size > 0}">
<apex:outputPanel rendered="{! !(group.list!= null && group.list.size > 1)}" layout="none" >
<apex:repeat var="link" value="{!group.links}">
(stuff with var link)
</apex:repeat>
</apex:outputPanel>
</apex:outputPanel>
</div>
</div>
</apex:repeat>
</apex:outputPanel>
</apex:outputPanel>
<apex:actionFunction name="myFunction" action="{!myFunction}" rerender="my_list, testBeforeTable, test2"/>
</apex:outputPanel>
</apex:form>
The function "myFunction" is correctly working and updating the value used in the apex:repeat loop. By using System.debug() on it, I can assert the value are correctly updated. However, the VisualForcePage does not update.
rerender="my_list"
should be sufficient. Have you tried that?