У меня есть страница с простым идентификатором в качестве параметра URL.Теперь я выполняю запрос, чтобы вернуть количество связанных сущностей, которые в основном необходимо перебрать: мне нужно расписание игр, которое нужно вернуть для игр LEAGUE, CUP и PLAYOFFS, поэтому списки результатов должны отличаться в зависимости отитерация.
Каждое из этих расписаний получает свою вкладку в графическом интерфейсе.Мне уже нужен JSTL c: forEach для вкладок RichFaces, поэтому мне «только» нужно найти способ установить другое ограничение WHERE для компонента (здесь экземпляр подкласса Seam EntityQuery).
Проблема здесь: Как вы параметризуете каждый запрос с текущей сущностью во время итерации?Как это лучше всего сделать в Seam / JBoss EL?Как получить другое ограничение или два в экземпляре EntityQuery во время итерации?
Вот код JSF, который я использую:
<rich:tabPanel>
<c:forEach items="#{participationListQuery.resultList}" var="pa">
<rich:tab label="#{...}" switchType="client">
<h:form>
<rich:dataTable id="schedule-scores"
value="#{rosterScheduleQuery.resultList}"
var="sgl"
width="100%"
rows="20">
...
</rich:dataTable>
</h:form>
</rich:tab>
</c:forEach>
</rich:tabPanel>
Проблема в том, что вы не можете просто вызвать что-то вроде #{rosterScheduleQuery.setCustomRestriction(pa.group.round.subCompetition.competition.name)}
в c: forEach, так как это выражение будет оцениваться только один раз (если я правильно понимаю).Я мог бы здесь упустить общий смысл, поскольку все это довольно процедурно.
Как вы обычно решаете итеративные и параметризованные запросы во время выполнения (дополнительные условия WHERE)?Всегда приветствуются лучшие практики.
Спасибо
Редактировать: Я уже использую Facelets, но rich: tabPanel требует использования JSTL c: forEach.См http://relation.to/11633.lace.