2017-01-12 4 views
0

У меня проблема с Primefaces 5 и JSF 2.1.Создание списка в голосе Разбитый боб

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

У меня есть ConversationScoped CDI bean и страница JSF с 5 текстовыми полями, сопоставленными с сущностью, штрих-кодом dataView и кнопкой. Я хочу продолжать добавлять данные из полей в dataView.

У меня есть список в классе bean, скажем, private List<dataEntity> data = new ArrayList<dataEntity>.

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

По существу список содержит N копий N-й записи

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

Это остановило меня последние два дня. Может ли кто-нибудь предложить некоторые решения этой проблемы. Я хочу использовать CDI beans, а не JSF Managed, если это вообще возможно.

Благодаря

+0

опубликовать свой код и уточнить, что вы имеете в виду, все записи заменяются –

+0

Когда вы начинаете разговор? Вы отметили это как долгое время? При каждой кнопке нажмите, если разговор не длится долго, а cid не будет присутствовать при следующем запросе, ваш факс, обработанный разговорами, будет фактически обработанным bean-компонентом – maress

ответ

0

Поскольку у вас нет кода здесь, мне придется сделать несколько предположений, но я думаю, что проблема ваша @ConversationScoped фасоль, или, вернее, понимание его жизненный цикл.

Если вы не сделаете разговор длинного хода, эта сфера будет вести себя в равной степени @RequestScoped - это будет выбрасываться после каждого запроса и создать заново на новом one.Which означает List в нем будет создан заново каждый раз.

То, что вы хотите здесь либо сделать разговор длинный ход, который вы обычно следующим образом:

@ConversationScoped 
public class YourBean { 

    @Inject Conversation conversation 

    // call this sometime within the first request 
    public void conversationStartingMethod() { 
     conversation.begin(); 
    } 

} 

В качестве альтернативы, вы можете сделать свой боб @SessionScoped вместо этого, который заставит его жить в целом HTTP-сеанс (или без тайм-аута/аннулирования).

+0

Извините за отсутствие кода, я путешествую и не имею доступа к компьютеру. Моя беседа начинается нормально, но когда я добавляю первый элемент в список, он работает нормально, поэтому я получаю одну запись типа dataEntity, скажем, e1, но когда я добавляю вторую запись, скажем, e2, список содержит две записи, но оба они являются e2 и так и так далее. По сути, список содержит N N-й записи – user

+0

Хм, я понимаю, что вы имеете в виду. Я буду ждать, пока вы опубликуете код - это больше похоже на крошечную ошибку в вашем коде (то, как вы храните его в списке), а не что-то еще. – Siliarus

Смежные вопросы