Кнопка рендеринга? - PullRequest
       1

Кнопка рендеринга?

0 голосов
/ 25 октября 2010

У меня есть одна командная кнопка для добавления задачи в корзину, это означает, что когда количество товаров на складе превышает 0, кнопка команды будет отображаться, но если количество товаров на складе равно 0, она не отображается. Как я могу написать один метод рендеринга с командной кнопкой для моего по требованию?

Отредактировано

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

Я отправляю свой код с вопросом: Я пишу один метод в Session 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 я был представлен 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 Ответ

3 голосов
/ 25 октября 2010

Ключевое слово 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...