命令按钮渲染?

时间:2010-10-25 10:07:44

标签: jsf ejb

我有一个命令按钮用于任务添加到购物车,这意味着当物品数量instock是geater比0时,命令按钮将显示,但如果物品数量instock为0则不显示。 如何根据需要使用命令按钮编写一个方法渲染?

被修改

=============================================== ==================================

我发布我的代码附加问题如下: 我在会话Bean中选择一种方法,库存中的库存数量列表为零以下:

public List<Items> checkItemsInstock(){
        Query query = em.createNamedQuery("Items.findByInstockgtZero");
        query.setParameter("instockgtzero", 0);

        return query.getResultList();

    }

和Namequery是:

@NamedQuery(name = "Items.findByInstockgtZero", query = "SELECT i FROM Items i WHERE i.instock = :instockgtzero")

在JSF Managed Bean中我编写了一个方法返回项目列表,并且库存数量为零

public List<Items> getQuantityOnHand(){
    return itemDAO.checkItemsInstock();
  }

在JSF Page i中呈现h:commandButton是:

<h:commandButton value="add to cart" style="font-size: x-small" action="#{catItemsListController.addtoCart(item)}"  id="addcart" rendered="#{not empty catItemsListController.quantityOnHand}"/>

但它不起作用,所有项目都有QOH为零或不为零显示CommandButton

我需要帮助! 谢谢

1 个答案:

答案 0 :(得分:3)

表达式语言的empty关键字将检查给定属性是null还是空。因此,在您的情况下,请使用not empty

<h:commandButton ... rendered="#{not empty myBean.myList}"/>

因此,只有列表存在且不为空时才会显示此按钮。

另一个想法是提供一种特定的方法:

public boolean isCommandButtonRendered() {
    return myList != null && !myList.isEmpty();
}

并在XHTML代码中使用它:

<h:commandButton ... rendered="#{myBean.commandButtonRendered}"/>

修改

我认为您对我提供的解决方案的期望存在误解。如果你想测试列表本身(即列表是null或者不包含任何元素),我的解决方案正在运行。

在您的情况下,您的列表似乎不是空的,但包含的元素(对象Items)的值可以等于0

我不知道您的Items课程的代码,因此我会认为此课程包含instock int属性。

据我所知,你在List内迭代datatable

<h:datatable var="item" value="#{catItemsListController.quantityOnHand}" ...>
    ...
    <h:column>
        <h:commandButton ... rendered="#{item.instock gt 0}"/>
    </h:column>
</h:datatable>

如我的代码所示,只有当commandButton元素的instock值大于(item)时才会显示gt 0 {1}}。