jsf-facelets.jar
JSF 1.x を使用しているため、(ファイルのように) Facelets 1.x を使用していることを意味します。この<ui:repeat>
タグには、Facelets 1.x の varStatus
属性はありません。Facelets 2.0で導入されました。
別の手段を探す必要があります。例えば<c:forEach>
<c:forEach value="#{bean.albums}" var="album" varStatus="loop">
<h:form>
<h:commandLink id="next" value="proxima" action="#{bean.next}">
<f:param name="id" value="#{loop.index}" />
</h:commandLink>
</h:form>
</c:forEach>
(オブジェクトの最初の使用法が完全に間違っていたことに注意してください。varStatus
生のインデックスは返されませんが、すべての反復ステータスの詳細を保持する完全なオブジェクト、とりわけgetIndex()
メソッドが含まれています#{listimages.index}
。 Facelets 2.x を使用していたこと)
または反復Album
オブジェクト自体の ID
<ui:repeat value="#{bean.albums}" var="album">
<h:form>
<h:commandLink id="next" value="proxima" action="#{bean.next}">
<f:param name="id" value="#{album.id}" />
</h:commandLink>
</h:form>
</ui:repeat>
どちらの方法でも、 in または の値を使用<managed-property>
してfaces-config.xml
それを取得します。#{param.id}
ExternalContext#getRequestParameterMap()
public void next() {
String id = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id");
// ...
}
ちなみに、お使いの環境は JBoss EL をサポートしているように見えるので (EL で括弧付きの完全なメソッド名を使用することで示されているように) Album
、アクション メソッドの引数として全体を渡すこともできます。
<ui:repeat value="#{bean.albums}" var="album">
<h:form>
<h:commandLink id="next" value="proxima" action="#{bean.next(album)}" />
</h:form>
</ui:repeat>
と
public void next(Album album) {
// ...
}