我对渲染组件有疑问。
我有一个典型的购物车栏,它是一个带弹出窗口的jsf组件,您可以在其中看到要购买的购物车元素(cartBar.xhtml),您可以从此弹出窗口中删除这些元素。
然后我有两个xhtml页面,一个是购物车摘要(cartSummary.xhtml),另一个是商品目录(catalog.xhtml)。
在cartSummary.xhtml和cartBar.xhtml中,我有一个删除购物车项目的按钮。因此,如果我从cartSummary中删除它,我必须渲染一个cartBar UIComponent来刷新shoppingCart和cartSummary。这非常有效。
但是如果我尝试从删除按钮中的cartBar(弹出窗口)中删除该项目,则会引用cartSummary.xthml的渲染属性,因为我需要该项目也从那里消失。问题是,当我尝试导航到catalog.xhtml时,会出现一个视图错误,告诉我无法找到cartBar渲染中的cartSummary.xthml UIComponent。
我会尝试一些代码。
cartBar.xhtml
<h:panelGroup id="cartItemsPopup" styleClass="row" layout="block">
//Code to show elements
<h:commandButton value="Delete">
<f:ajax listener="#{shoppingCartBean.deleteItem(cartItem)}" render="@form :cartItemBlock" />
</h:commandButton>
</h:panelGroup>
cartSummary.xhtml
<h:panelGroup id="cartItemBlock" styleClass="row" layout="block">
//Code to show elements
<h:commandButton value="Delete">
<f:ajax listener="#{shoppingCartBean.deleteItem(cartItem)}" render="@form :cartItemsPopup" />
</h:commandButton>
</h:panelGroup>
当我点击cartBar.xhtml h:commandButton然后我导航到目录时,错误说:cartItemBlock无法找到,因为它是来自cartSummary的UIComponent。
知道如何解决这个问题吗?