I have a lookup field and a select list. After selection of a record on the lookup field, a select list should be populated. My updatingAddressOptions() method is called but my getAddressOptions() is never called on rerender, thus never getting the most recent select options.
<apex:pageBlockSection>
<apex:outputLabel value="Targeted District" for="SchoolDistrict"/>
<apex:actionRegion>
<apex:inputField id="SchoolDistrict" value="{!Consultant_Request__c.Targeted_District__c}" required="false">
<apex:actionSupport event="onchange"
action="{!updateAddressOptions}"
rerender="AccountAddressSelect, address, city, state, country, postalcode"
focus="AccountAddressesSelect"
/>
</apex:inputField>
<apex:outputLabel value="Account Addresses"></apex:outputLabel>
<apex:selectList size="1" id="AccountAddressesSelect" value="{!AccountAddress}">
<apex:selectOptions value="{!AddressOptions}"/>
<apex:actionSupport event="onchange"
action="{!updateAddressFields}"
rerender="address, city, state, country, postalcode"
focus="SiteAddressField"/>
</apex:selectList>
</apex:actionRegion>
</apex:pageBlockSection>
Controller code:
public List<SelectOption> AddressOptions;
public void updateAddressOptions() {
System.debug('@@@setting address options');
List<SelectOption> accountAddressOptions = new List<SelectOption>();
// lots more things happening here
AddressOptions = accountAddressOptions;
System.debug('@@@@@AddressOptions in setAddressOptions(): ' + AddressOptions);
}
public List<SelectOption> getAddressOptions(){
System.debug('@@@getting address options');
System.debug('@@@@@AddressOptions in getAddressOptions(): ' + AddressOptions);
return AddressOptions;
}
Best Answer
You need to rerender a container not the actual select list.
change to this:
Then rerender the "AddressSelect-Wrapper>