Я знаю, что это похоже на много текста, но я думаю, что это довольно простая концепция, которую мне не хватает.Почему моя переменная цикла Facelets не выходит за рамки?
Я пишу веб-приложение с Facelets. У меня есть собственный тег rq: request-list, который принимает список запросов в качестве параметра и выводит прекрасную таблицу для их отображения. Все идет нормально.
RQ: запрос-лист начинается, как и следовало ожидать:
<!-- ... -->
<ice:dataTable value="#{list}" var="req">
<ice:column>
<f:facet name="header">Date last edited</f:facet>
<ice:outputText value="#{req.dateModified}" />
</ice:column>
<!-- ... -->
И что получается просто отлично. Он даже имеет ссылку в таблице для редактирования запроса. Yippee!
<ice:column rendered="#{spokespersonView}">
<f:facet name="header">Edit</f:facet>
<h:commandLink value="Edit" action="edit_r" rendered="#{RequestSessionBean.mutable}">
<f:setPropertyActionListener target="#{RequestSessionBean.request}" value="#{req}"/>
</h:commandLink>
</ice:column>
Это подводит нас к странице редактирования, после установки запроса в вспомогательном компоненте к одной представленной строке таблицы мы находимся. Здесь проблема. И это тонко.
rq: request-list используется несколько раз на одной странице; как таковой:
<ui:repeat value="#{ExperimentListBean.usersExperiments}" var="exp">
<rq:request-list list="#{RequestListBean.requestsByExperiment[exp]}" showExperiment="false" spokespersonView="true" />
</ui:repeat>
Теперь таблицы появляются OK; то есть весь текст прав. Тем не менее, commandLinks указывают на неправильные запросы ... они указывают на запрос соответствующей строки last rq: request-list на странице. Данные, относящиеся к Запросам, выводятся так, как это должно быть в таблице, но {req} указывает на неправильный запрос, когда дело доходит до нажатия на commandLink.
Повторюсь, если у меня есть несколько RQ: запрос-листы на странице, ссылку Изменить для первой строки каждые RQ: запрос-лист указывает на первый запрос (строки) в последнем RQ: request-list на странице. Ссылка на ссылку для второй строки каждые rq: request-list указывает на второй запрос (строку) последнего rq: request-list на странице. И т. Д.
Как я могу получить {req}, чтобы указать, что это такое, а не просто индекс в устаревшем списке?
Спасибо!
Это сработало! Спасибо! Я все еще новичок в веб-программировании на Java; Я думал, что c: forEach был выполнен только один раз, а ui: repeat выполнялся каждый раз. Но опять же, эта страница не возвращается к себе, поэтому я не понимаю, почему это имеет значение в любом случае. Во всяком случае, это работает, поэтому спасибо! – Nick