我有一个命令按钮用于任务添加到购物车,这意味着当物品数量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
我需要帮助! 谢谢
答案 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}}。