1

データグリッドの再レンダリングで奇妙な影響を処理する方法についてのヒントを探しています。次のグリッド構造があります。

<rich:dataGrid id="allProductsGrid" value="#{allProducts}" var="_product">                       
     <s:div styleClass="grid-element">
         <s:link view="/product.xhtml">
             <s:div styleClass="product-element">                                                                                                           
                 <h:graphicImage value="/content/images?id=#{_product.image.id}&amp;width=170"/>                                                                                                                                                                                                                                        
             </s:div>                           
             <div id="title">
                 <h:outputText value="#{_product.name}" />
             </div>
             <f:param name="productId" value="#{_product.id}" />
        </s:link>                                                                
     </s:div>
 </rich:dataGrid>

グリッドは、検索入力フィールドによって起動される onkeyup イベントで再レンダリングされます。ここまで魔法なし。ここでの問題は、reRendering が生成された html (DOM) の構造を変更することです。その結果、リンクは機能しなくなりました。

ページの最初のレンダリングでの firebug-html-inspect は次のとおりです。

 <div id="j_id86:allProductsGrid:0:j_id124" class="grid-element">
    <a id=".. " onclick=".." href="/portal/product.vc?productId=22&cid=69">
        <div id="j_id86:allProductsGrid:0:j_id126" class="product-element">
            <img src="/portal/content/images?id=&width=170">
        </div>
        <div id="title">Sample Product</div>
    </a>
</div>

グリッドを再レンダリングした後、html 出力は次のようになります。

<div id="j_id86:allProductsGrid:0:j_id124" class="grid-element">
    <a id=".." onclick=".." href="/portal/product.vc?productId=22&cid=76"></a>
    <div id="j_id86:allProductsGrid:0:j_id126" class="product-element">
        <img src="/portal/content/images?id=&width=170">
    </div>
    <div id="title">Sample Product</div>
</div>

その結果、a-tag はもはや product-element をラップしていません。ここで何が間違っているのか、誰かにヒントを教えてもらえますか?? どんな助けでも感謝します。前もって感謝します。

ジョシュ

PS: Seam 2.2.2 / JSF Mojarra 2.0.3 / RichFaces 3.3.3 を使用

4

1 に答える 1

0

allProductsBean に RequestScope ではなく ViewScope があることを確認してください。したがって、再レンダリングでは、データは呼び出しで保持されます。

于 2012-05-25T15:32:04.313 に答える