【问题标题】:Command Button Render?命令按钮渲染?
【发布时间】:2011-04-30 03:17:42
【问题描述】:

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

编辑

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

我发布了我的代码附件,并附有以下问题: 我在 Session Bean 中编写了一种方法,选择库存数量为零以下:

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

        return query.getResultList();

    }

而名称查询是:

@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 页面中我被渲染了 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 为零或不为零的项目都是显示命令按钮

我需要帮助! 谢谢

【问题讨论】:

    标签: jsf ejb


    【解决方案1】:

    表达式语言的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 属性。

    据我所知,您在 datatable 内迭代您的 List

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

    如我的代码所示,只有当item 元素的instock 的值大于(gt0 时,才会显示commandButton

    【讨论】:

    • @romaintaz:感谢您的支持,但它不起作用,我正在编辑我的问题,请检查!谢谢
    • @MYE 在getQuantityOnHand() 方法中,也许您可​​以添加一个日志以检查列表中的元素数量。
    • @MYE 代码示例到底是什么?
    • `你可以添加一个日志以检查列表中的元素数量`我还没有理解你说的!这意味着用户登录?
    • 不,只是一个System.out.println("List size: " + myList.size());(或log,例如使用log4j)来检查getter是否返回一个空列表...
    猜你喜欢
    • 2012-09-29
    • 2018-05-06
    • 2015-01-02
    • 1970-01-01
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多