Я пытаюсь скрыть раздел searchCriteria при нажатии на ссылку «Изменить».Сокрытие выполняется в методе контроллера editSearchResult () с использованием переменной pageLoad.
«pageLoad» используется в разделе «searchCriteria» с отображаемым атрибутом.Но этот раздел не обновляется обновленными значениями из контроллера при нажатии на ссылку «Изменить».
Но если я удалю атрибут 'rendered' в разделе 'searchCriteria', система обновит раздел с обновленными значениями из Controller.Кто-нибудь может объяснить, как отображаются «визуализированные» ручки?
Код Visualforce:
<apex:page controller="RerenderDemoController">
<apex:form id="thisForm">
<apex:outputPanel id="searchCriteria" rendered="{!pageLoad}">
<apex:pageBlock>
<apex:pageBlockSection>
This is Search Criteria Section. Page Load: {!pageLoad},
User: <apex:outputText value="{!userName}">
</apex:outputText>
</apex:pageBlockSection>
</apex:pageBlock>
</apex:outputPanel>
<apex:outputPanel id="searchResults">
<apex:pageBlock>
<apex:pageBlockSection>
This is Search Results Section. {!accts}
</apex:pageBlockSection>
</apex:pageBlock>
</apex:outputPanel>
<apex:outputPanel id="EditResult">
<apex:pageBlock>
<apex:pageBlockSection>
This is Edit Result Section.
<apex:commandLink action="{!editSearchResult}" reRender="searchCriteria">Edit</apex:commandLink>
</apex:pageBlockSection>
</apex:pageBlock>
</apex:outputPanel>
</apex:form>
</apex:page>
Контроллер Apex:
public class RerenderDemoController {
public List<Account> accts {get; set;}
public Boolean pageLoad {get; set;}
public String userName {get; set;}
public RerenderDemoController() {
pageLoad = true;
userName = 'My First Name';
accts = [select id, name from Account limit 10];
}
public void editSearchResult() {
pageLoad = false;
accts = [select id, name from Account limit 20];
userName = 'My Last Name';
}
}