Генерировать имена динамических столбцов с динамическим значением в JSF [duplicate]

Посмотрите на этот пример:

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope,$http) {

    var getJoke = function(){
        return $http.get('http://api.icndb.com/jokes/random').then(function(res){
            return res.data.value;  
        });
    }

    getJoke().then(function(res) {
        console.log(res.joke);
    });
});

Как вы можете видеть, getJoke возвращает разрешенное обещание (оно разрешено при возврате res.data.value). Таким образом, вы ждете, пока запрос $ http.get не будет завершен, а затем выполнится console.log (res.joke) (как обычный асинхронный поток).

Это plnkr:

http://embed.plnkr.co/XlNR7HpCaIhJxskMJfSg/

2
задан BalusC 13 March 2015 в 12:37
поделиться

1 ответ

<c:forEach> должен работать с value="#{item.gamesEntered}", а не с полной строкой, но это не так.

Теги JSTL запускаются во время сборки сборки время, построение дерева компонентов JSF. Компоненты JSF выполняются во время просмотра рендеринга, вызывая вывод HTML. Итак, в настоящий момент <c:forEach> работает, <p:dataTable> не запускается, а его var нигде не доступен и будет оцениваться как null. Обратите внимание, что это также относится к rowIndexVar, который будет оцениваться как 0 (значение по умолчанию для int).

См. Также


Я пробовал <ui:repeat>, но в любом случае страница становится пустой, если эта данные должны были появиться.

UIData компоненты могут принимать только дети UIColumn . <ui:repeat> не является таким. <c:forEach> работает, потому что он в основном создает кучу физических компонентов <p:column> для данных. Вам повезло, что каждый элемент имеет, по-видимому, такое же количество gamesEntered, что и первый элемент, это в противном случае также сильно потерпело бы неудачу.

См. Также:


Кстати, вам нужно <p:columns>, которое в основном является <ui:repeat>, которое простирается от класса UIColumn. Но и здесь его value нельзя установить для каждой строки, только для каждой таблицы. rowIndexVar недоступен в <p:columns value> и в любом случае будет оцениваться как 0.

<p:dataTable value="#{events.gameRecordList}" var="item" rowIndexVar="rowIndex">
    <p:column>#{item.field1}</p:column>
    <p:column>#{item.field2}</p:column>
    <p:columns value="#{events.gameRecordList[0].gamesEntered}" columnIndexVar="columnIndex">
        <p:selectBooleanCheckbox value="#{events.gameRecordList[rowIndex].gamesEntered[columnIndex]}"/>
    </p:columns>
</p:dataTable>

См. Также:

6
ответ дан Community 24 August 2018 в 05:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: