2017-07-10 11 views
0

catalogoオブジェクトをidから取得する必要があるため、catalogo.idを出力する必要があります。私はイテレータを持っているので、どうすれば入手できますか?今、私は今action?idprodotto=XX&idcatalogo=struts2のイテレータ外で値を取得する方法

JSP

<s:iterator value="catalogo"> 
    <s:iterator value="prodotti"> 
     <tr style="background-color: #99CCFF"> 
      <td><s:property value="id" /></td> 
      <td><s:property value="descrizione" /></td> 
      <td><s:property value="prezzo" /></td> 
      <td><s:property value="nPezziVenduti" /></td> 
      <td><a 
       href='<s:url action="cancellaProdottoDaCatalogo.action" > 
      <s:param name="idprodotto"><s:property value="id"/></s:param> 
      <s:param name="idcatalogo"><s:property value="catalogo.id"/></s:param></s:url>'>rimuovi 
        dal catalogo</a></td> 
     </tr> 
    </s:iterator> 
</s:iterator> 

UPDATE を印刷し、私はcatalogoのIDを得たが、アクションで、私はNullPointerエラーを持って、私は[1].idと私は唯一の文字列を渡すことを考えると、オブジェクトではありません。どのようにしてこの問題を解決できますか?

NEW JSP

<s:iterator value="catalogo"> 
    <s:iterator value="prodotti"> 
     <tr style="background-color: #99CCFF"> 
      <td><s:property value="id" /></td> 
      <td><s:property value="descrizione" /></td> 
      <td><s:property value="prezzo" /></td> 
      <td><s:property value="nPezziVenduti" /></td> 
      <td><a 
       href='<s:url action="cancellaProdottoDaCatalogo.action" > 
      <s:param name="idprodotto"><s:property value="id"/></s:param> 
      <s:param name="idcatalogo"><s:property value="[1].id"/></s:param></s:url>'>rimuovi 
        dal catalogo</a></td> 
     </tr> 
    </s:iterator> 
</s:iterator> 

アクションメソッド

public String cancellaProdottoDaCatalogo(){ 
    System.out.println(catalogo.getDescrizione()); 
    Catalogo tmp = catalogoDAO.getCatalogo(catalogo.getId()); 
    for(Prodotto p:catalogo.getProdotti()){ 
     tmp.rimuoviProdotto(p); 
    } 
    catalogoDAO.aggiornaCatalogo(catalogo); 
    return SUCCESS; 
} 
+0

私が正しく理解している場合は、https://stackoverflow.com/questions/2327466/struts-2-nesting-iteratorsから解決できます。イテレータプロパティ –

+0

@ALeeをバインドするために 'var'プロパティを使用してください私はオブジェクトを渡すことはできませんが、私は "文字列"を渡します。右? – Manlio

+0

「​​」タグのように印刷しますか?その列をどこにでも印刷するには、​​を使用します。 – beendr

答えて

0

私は@Aリーはすでにコメントで答えとしてあなたは、var -attributeを使うべきだと思うの更新質問を読んだ後。

ネストされた反復があり、最初のイテレータにアクセスするには、最初のイテレータから値を見つけるために何らかの種類の参照を使用する必要があります。 varは、外側のループの現在の要素への参照を与え、cという値のスタックに参照をプッシュします。

内側ループと同じpは内側ループの現在の要素を参照します。簡単にだけ支柱ドキュメントhereで第3の例を参照IDする説明等を使用できるように支柱反復子は、値スタックに現在の要素のelementesをプッシュ:サイドノートとして

例:

<s:iterator value="catalogo" var="c"> 
    <s:iterator value="#c.prodotti" var="p"> 
    <s:url action="..." var="urlCancel"> 
     <s:param name="idprodotto" value="#p.id"/> 
     <s:param name="idcatalogo" value="#c.id"/> 
    </s:url> 
    <td>Catalogo Id: <s:property varlue="#c.id"/></td> 
    <td>Prodotti Id: <s:property varlue="#p.id"/></td> 
    <!-- other columns --> 
    <td><a href="<s:property value='urlCancel'/>Link</a></td>" 
    </s:iterator> 
</s:iterator> 

注refernce名の前、コンテキストで変数を検索するには、この場合には必須です。

関連する問題