【问题标题】:JSF RichFaces reRender event changes rich:dataGrid structureJSF RichFaces reRender 事件变化丰富:dataGrid 结构
【发布时间】:2012-05-31 07:44:30
【问题描述】:

我正在寻找有关如何处理重新渲染数据网格的奇怪效果的提示。我有以下网格结构:

<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 事件上重新渲染。到目前为止还没有魔法。现在的问题是重新渲染改变了生成的 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

【问题讨论】:

  • 真的没有人面临这种​​影响吗?
  • 您是否尝试过更改 bean 的范围?尽管该 ajax 请求看起来像是一个新请求,但这就是 cid 不同的原因。

标签: datagrid jboss richfaces seam ajax4jsf


【解决方案1】:

确保您的 allProducts bean 具有 ViewScope 而不是 RequestScope。所以在重新渲染时,数据会在调用中持久化。

【讨论】:

  • 感谢您的回复。负责任的行动 bean 在 ScopeType.PAGE - 但实际上我不认为这个问题是范围问题,不是吗? - 因为网格数据(即产品)正在正确刷新。
  • 欢迎来到 StackOverflow。如果这是您正在寻找的答案,请不要忘记mark this post as an answer
猜你喜欢
  • 2011-10-14
  • 1970-01-01
  • 1970-01-01
  • 2011-02-11
  • 2011-06-16
  • 2011-10-15
  • 2011-07-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多