JSF渲染组件(如果存在)

时间:2014-02-17 16:16:11

标签: ajax jsf components render uicomponents

我对渲染组件有疑问。

我有一个典型的购物车栏,它是一个带弹出窗口的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。

知道如何解决这个问题吗?

0 个答案:

没有答案