<h: inputText> не работает в <ui: repeat>, только последняя запись отправлена

у меня есть с :



    
        
            
                <p class="center">#{itemsBuying.name}</p>
                
                    
                        
                        
                    
                 
            
        
    

Это#{genproducts} поддерживающий боб:

@ManagedBean(name = "genproducts")
@ViewScoped
public class Genproducts{

    public List dbList() throws SQLException {
        List list = new ArrayList();
        ...
        return list;
    }

} 

ЭтоProduct юридическое лицо:

@ManagedBean(name = "product")
@RequestScoped
public class Product {

    private int amount;

    public int getAmount() {
        return amount;
    }

    public void setAmount(int amount) {
        this.amount = amount;
    }

}

В моем случае есть четыре продукта изdbList() метод. Для первых трех продуктов, когда я ввожу другое значение, значение по умолчанию появляется в методе действия. Только для последнего продукта, он работает как положено.

Как это вызвано и как я могу решить это?

 zargarf04 июн. 2013 г., 12:30
С кодом, который вы написали, каждая ссылка находится в своей собственной форме. Почему вы используете форму на ссылку? Переместите форму за пределы интерфейса: repeat:
 user244997205 июн. 2013 г., 15:50
Поскольку есть много продуктов, если я переместу форму за пределы пользовательского интерфейса: повторяю, она выиграетт работает как положено.

Ответы на вопрос(1)

Решение Вопроса

вызвано тем, что тыповторное создание списка в методе получения, Этот метод вызывается во время каждого цикла итерации. Таким образом, каждая следующая итерация будет в основном уничтожать значения, установленные во время предыдущей итерации. В методе действия вы получаете список, созданный во время последнего цикла итерации. Тот'почему последняя запись работает нормально.

Такой подход действительно абсолютно не верен. Вы не должны выполнять бизнес-логику в методах получения вообще. Сделайте список свойством и заполните его только один раз во время bean'апост (пост) строительство.

@ManagedBean(name = "genproducts")
@ViewScoped
public class Genproducts{

    private List<product> list;

    @PostConstruct
    public void init() throws SQLException {
        list = new ArrayList<>();
        // ...
    }

    public List<product> getList() {
        return list;
    }

} 
</product></product>

Который должен упоминаться как

<ui:repeat value="#{genproducts.list}" var="itemsBuying">
</ui:repeat>
Смотрите такжеКак и когда я должен загрузить модель из базы данных для h: dataTableПочему JSF вызывает геттеры несколько раз
 BalusC05 июн. 2013 г., 16:01
Вы должны манипулировать свойством в (post) конструкторе или методе action (listener), а не в свойствеметод получения. Нажмите "Смотрите также" ссылка, чтобы узнать больше. Относительно того, почему работает последний продукт, это уже объясняется в 1-м абзаце ответа. Вы читали текст и ссылки ответа, а не только код?
 user244997205 июн. 2013 г., 16:01
спасибо BalusC, я использую метод dbList (), потому что он будет возвращать разные результаты в зависимости от пользователя 'С выбором. Также мне интересно, почему последний продукт работает как положено, а другие нет. Я пытался с p: spinner и h: inputText, не былоникакой разницы. С пользовательским интерфейсом: повторюсь, я думаю, что каждый продукт в списке должен работать одинаково, но это не такт.

Ваш ответ на вопрос