2

jsf 1.2、jboss 4.2.3、およびリッチフェイス 3.3.3

a のインデックスを a として送信しようとしていますが、null を返し続けます。

<ui:repeat id="al11" var="albumslistvalue1" value="#{AlbumDetailBean.getAlbumImagesList()}" varStatus="listimages">
  <h:form>
    <h:commandLink value="proxima" id="next" action="#{AlbumDetailBean.escreveparam()}">
      <f:param name="fotoid" value="#{listimages}" />
    </h:commandLink>
  </h:form>
</ui:repeat>

escreveparam() メソッドは、param のみを書き込みます。

public void escreveparam(){
    String fotoid = ((HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest()).getParameter("fotoid");
    System.out.println("Teste:" + fotoid);
}

なぜ常に null なのですか?

4

1 に答える 1

1

jsf-facelets.jarJSF 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) {
    // ...
}
于 2012-08-14T13:21:34.560 に答える