Вечер добрый. Есть visualforce страница для объекта Account, и extension controller для это страницы.
При открытии страницы загружаю на неё таблицу с записями(wrapper над кастомным объектом). Отмечаю с помощь checkbox те что хочу удалить и нажимаю на commandButton которая вызывает метод из контроллера, для удаления записи. Что странно, в методе моя коллекция записей ВСЕГДА пустая ! Будто по нажатию страница обновляется но данные снова не подтягиваются. В итоге ловлю null pointer…
Help, есть мысли? Почему по нажатию на кнопку, все переменные класса подчищаются?
Вот пример такого контроллера и страницы, проблема та же самая.
EmployeeController
public class EmployeeController {
public static List<Employee__c> employees {get;set;}
public static List<EmployeeWrapper> employeesWrappers {get;set;}
public EmployeeController () {
employees = [SELECT id, Name FROM Employee__c];
employeesWrappers = new List<EmployeeWrapper>();
initEmployeeWrappers(employees);
}
private static void initEmployeeWrappers(List<Employee__c> employees) {
for(Employee__c emp : employees) {
employeesWrappers.add(new EmployeeWrapper(emp));
}
}
public static void remove() {
List<Employee__c> employeesForDelete = new List<Employee__c>();
for(EmployeeWrapper wrap : employeesWrappers) {
if(wrap.isSelected){
employeesForDelete.add(wrap.employee);
}
}
delete employeesForDelete;
}
private class EmployeeWrapper {
public Employee__c employee{get;set;}
public Boolean isSelected{get;set;}
public EmployeeWrapper(Employee__c emp){
employee = emp;
isSelected = false;
}
}
}
VisualForce
<apex:page controller="EmployeeController">
<apex:form >
<apex:pageBlock title="Inline Visualforce Page Example">
<apex:pageBlockButtons >
<apex:commandButton value="Remove" action="{!remove}" reRender="emp" />
</apex:pageBlockButtons>
<apex:pageBlockSection>
<apex:pageBlockTable value="{!employeesWrappers}" var="emp" id="emp">
<apex:column >
<apex:inputCheckbox value="{!emp.isSelected}"/>
</apex:column>
<apex:column title="Name">
<apex:outputText value="{!emp.employee.Name}"/>
</apex:column>
</apex:pageBlockTable>
</apex:pageBlockSection>
</apex:pageBlock>
</apex:form>
</apex:page>