Получатель / Установщик для Списка - PullRequest
0 голосов
/ 03 ноября 2010

у меня есть один метод:

public List<Car> getCart(){
 //do something
}

и в JSF Page i пользователь использует этот метод для отображения данных в h: dataTable

и в представлении (страница JSF) у меня есть один inputText в h: dataTable, пример в h: dataTable. У меня есть 2 столбца: Имя корзины и Количество, и столбец Количество - это inputText для редактирования пользователем Количество элемента. Моя проблема в том, как я могу установить значение для List dataType? потому что у меня есть формула для обновления корзины:

Quantity of Cart Update = (Item In stock + old Quantity of each item) - new Quantity of each item

в формуле я могу получить товар в наличии, но я задаюсь вопросом между старым количеством каждого предмета и новым количеством каждого предмета, потому что, если я получу количество каждого предмета, оно приобретет новое значение. Но теперь я просто получаю значение старого количества каждого предмета, потому что я не знаю, как установить для списка

Каждый может иметь какие-либо идеи для этой проблемы и мою формулу?

Спасибо

=============================================== * * 1015

Редактировать

мой метод списка корзин в бине

public List<Cart> getUserCart(){
        int userid = getMemberLoginController().getUser().getUserid().intValue();
        return cartDAO.getUSerCart(userid);
    }

cartDAO - это Session Bean Stateless, он делает getResultList, где userid =: userid.

и метод обновления

 public void updateCart(){
        List<Cart> cartQuantity = getUserCart();
        int i = 0 ;
        for(Cart cartQuantityOnHand : cartQuantity){
            i = cartQuantityOnHand.getCartQuantity();
            int a =  i + cartQuantityOnHand.getItem().getInstock();
            System.out.println(i);
        }
     }

как получить старое количество в списке и новое количество в списке?

1 Ответ

1 голос
/ 03 ноября 2010

Список не нуждается в установщике. JSF будет вызывать только свой метод получения, а затем вызывать его для каждого элемента списка.

Ваша проблема звучит так, как будто вы загружаете список внутри геттера каждый раз, а не в конструкторе или постконструкторе бина. Если вы получаете список по его получателю в методе действия bean-компонента, то исходный список со всеми представленными значениями будет заменен новым из БД.

Итак, вы НЕ должны проектировать его как:

public List<Item> getItems() {
    return em.createNamedQuery("Item.list", Item.class).getResultList();
}

public String submit() {
    for (Item item : getItems()) {
        em.persist(item);
    }
    return "outcome";
}

Но вы должны сделать это так:

private List<Item> items;

@PostConstruct
public void init() {
    items = em.createNamedQuery("Item.list", Item.class).getResultList();
}

public List<Item> getItems() { 
    return items;
}

public String submit() {
    for (Item item : items) {
        em.persist(item);
    }
    return "outcome";
}
...