これが多くのテキストのように見えることはわかっていますが、私が見逃しているのは非常に単純な概念だと思います。
Facelets を使用して Web アプリケーションを作成しています。カスタム タグ rq:request-list を取得しました。このタグは、リクエストのリストをパラメーターとして取り、それらを表示する素敵なテーブルを出力します。ここまでは順調ですね。
rq:request-list は、期待どおりに始まります。
<!-- ... -->
<ice:dataTable value="#{list}" var="req">
<ice:column>
<f:facet name="header">Date last edited</f:facet>
<ice:outputText value="#{req.dateModified}" />
</ice:column>
<!-- ... -->
そして、それはうまくいきます。テーブルには、リクエストを編集するためのリンクもあります。ヤッピー!
<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>
バッキング Bean のリクエストを、現在のテーブル行で表されるリクエストに設定した後、編集ページに移動します。これが問題の場所です。そして微妙です。
rq:request-list は 1 ページで複数回使用されます。そのような:
<ui:repeat value="#{ExperimentListBean.usersExperiments}" var="exp">
<rq:request-list list="#{RequestListBean.requestsByExperiment[exp]}" showExperiment="false" spokespersonView="true" />
</ui:repeat>
これで、テーブルは正常に表示されます。つまり、すべてのテキストが正しいです。ただし、commandLinks は間違った Requests を指しています...ページの最後のrq:request-list の対応する行の Request を指しています。リクエストに関連するデータはテーブルにあるはずのように出力されますが、{req} は commandLink をクリックすると間違ったリクエストを指します。
繰り返しになりますが、ページにいくつかの rq:request-list がある場合、すべてのrq:request-list の最初の行の [編集] リンクは、ページの最後の rq:request-list の最初の要求 (行) を指しています。 . 各rq:request-listの 2 行目の Edit リンクは、ページの最後の rq:request-list の 2 番目の要求 (行) を指しています。等。
時代遅れのリストのインデックスだけでなく、{req} が以前の自分を指すようにするにはどうすればよいでしょうか?
ありがとう!