URL パラメーターとして単純な ID を持つページがあります。ここで行うことは、基本的に反復する必要がある関連エンティティの数を返すためのクエリを実行することです: LEAGUE ゲーム、CUP ゲーム、および PLAYOFFS ゲームについてゲームのスケジュールを返す必要があるため、結果リストはゲームごとに異なる必要があります。反復。
これらの各スケジュールは、GUI で独自のタブを取得します。RichFaces タブにはすでに JSTL c:forEach が必要なので、別の WHERE 制限をコンポーネント (ここでは Seam EntityQuery サブクラス インスタンス) に設定する方法を見つけるだけで十分です。
ここでの問題は、反復中に現在のエンティティを使用して各クエリをどのようにパラメーター化するかということです。Seam/JBoss EL ではどのように行うのが最適ですか? 反復中に EntityQuery インスタンスに別の制限を 1 つまたは 2 つ取得するにはどうすればよいですか?
私が使用する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>
ここでの問題は、c:forEach のようなものを単純に呼び出すことができないことです#{rosterScheduleQuery.setCustomRestriction(pa.group.round.subCompetition.competition.name)}
。これは、この式が 1 回しか評価されないためです (私が正しく理解している場合)。これはすべてかなり手続き的なものなので、ここで全体的なポイントを見逃している可能性があります。
通常、反復および実行時にパラメータ化されたクエリ (追加の WHERE 条件) をどのように解決しますか? ベスト プラクティスはいつでも歓迎します。
ありがとう
編集:私はすでに Facelets を使用していますが、rich:tabPanel では JSTL c:forEach を使用する必要があります。http://relation.to/11633.laceを参照してください。