Регистрация  |  Вход

Вывод данных в таблицу VisualforcePage через apex:repeat / решено

Подскажите пожаулйста, такой вопрос, никак не получается решить)

Дано: vfp страница + контроллер. Нужно на страницу вывести таблицу с данными,

для этого в контроллере создаю класс с тремя String полями, заполняю его, и использую на странице <apex:repeat> (Передаю в таблицу заполненный объект, как приведено в доках (https://developer.salesforce.com/docs/atlas.en-us.pages.meta/pages/pages_compref_repeat.htm#!)

на выходе - тишина(

хотя дебаг показывает что объект не пустой

Как быть?

(код страницы и контроллера)

<apex:page  controller="TestPController">
<table>
<tr><td>CabinNumber</td><td>CabinType</td><td>PassengerName</td></tr>
<apex:repeat var="variable" value="{!passengers}">
<tr>
<td>{!variable.cabinNumber}</td>
<td>{!variable.cabinType}</td>
<td>{!variable.passengerName}</td>
</tr>
</apex:repeat>
</table>
</apex:page>

public class TestPController {
public List<Passenger> passengers {get;set;}
public class Passenger {
public String passengerName {get;set;}
public String cabinNumber {get;set;}
public String cabinType {get;set;}
}

public TestPController() {
List<Passenger> passengers = new List<Passenger>();

Passenger pass = new Passenger();

for (Integer i = 0; i < 3; i++) {
pass.passengerName = 'Name' + i;
pass.cabinNumber = 'cabinNumber' + i;
pass.cabinType = 'cabinType' + i;
passengers.add(pass);
}
System.debug(passengers);
}
}

Подскажите пожаулйста, такой вопрос, никак не получается решить)

Дано: vfp страница + контроллер. Нужно на страницу вывести таблицу с данными,

для этого в контроллере создаю класс с тремя String полями, заполняю его, и использую на странице <apex:repeat> (Передаю в таблицу заполненный объект, как приведено в доках (https://developer.salesforce.com/docs/atlas.en-us.pages.meta/pages/pages_compref_repeat.htm#!)

на выходе - тишина(

[img]https://nnstar.ru/screenshot.jpg[/img]

хотя дебаг показывает что объект не пустой

Как быть?

(код страницы и контроллера)

[code]<apex:page  controller="TestPController">
    <table>
        <tr><td>CabinNumber</td><td>CabinType</td><td>PassengerName</td></tr>
        <apex:repeat var="variable" value="{!passengers}">
            <tr>
                <td>{!variable.cabinNumber}</td>
                <td>{!variable.cabinType}</td>
                <td>{!variable.passengerName}</td>
            </tr>
        </apex:repeat> 
    </table>
</apex:page>[/code]

[code]public class TestPController {
    public List<Passenger> passengers {get;set;}
    public class Passenger {
        public String passengerName {get;set;}
        public String cabinNumber {get;set;}
        public String cabinType {get;set;}
    }

    public TestPController() {
        List<Passenger> passengers = new List<Passenger>();

        Passenger pass = new Passenger();
        
        for (Integer i = 0; i < 3; i++) {
            pass.passengerName = 'Name' + i;
            pass.cabinNumber = 'cabinNumber' + i;
            pass.cabinType = 'cabinType' + i;
			passengers.add(pass);
        }
        System.debug(passengers);
    }    
}[/code]

Для начала перемести строку
Passenger pass = new Passenger();
внутрь for цикл.
А то получается что ты добавляешь в массив один и тот же объект в котором меняешь поля. Даже не представляю что в итоге у тебя получается в массиве passengers.

Проверь что получится. Если не заработает, будем думать дальше.

Для начала перемести строку
Passenger pass = new Passenger();
внутрь for цикл.
А то получается что ты добавляешь в массив один и тот же объект в котором меняешь поля. Даже не представляю что в итоге у тебя получается в массиве passengers.

Проверь что получится. Если не заработает, будем думать дальше.

Большое спасибо быстро помогли объяснили всё работает
в контроллере изменить

List<Passenger> passengers = new List<Passenger>();

на

passengers = new List<Passenger>();

(ошибка не объявлять новую пер, а работать со свойством объекта, чтобы его было видно из vfp),

и Passenger pass = new Passenger(); поместить внутрь цикла чтобы корректно заполнить объект

Большое спасибо быстро помогли объяснили всё работает
в контроллере изменить 

List<Passenger> passengers = new List<Passenger>();

на

passengers = new List<Passenger>();

(ошибка не объявлять новую пер, а работать со свойством объекта, чтобы его было видно из vfp),

и Passenger pass = new Passenger(); поместить внутрь цикла чтобы корректно заполнить объект

List<Passenger> passengers = new List<Passenger>();
А блин, точняк. Чет я это упустил из виду
Отлично что заработало!

List<Passenger> passengers = new List<Passenger>();
А блин, точняк. Чет я это упустил из виду :D 
Отлично что заработало!