новый диалог CDI

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

Дело в следующем: у меня есть страница jsf с cdi bean-компонентом для обработки создания и изменения заказа. В меню страницы есть пункт "новый заказ". Итак, при изменении заказа мне нужно нажать «новый заказ», и страница должна быть обновлена ​​​​с новым идентификатором клиента и новой областью диалога. Но если я попытаюсь это сделать, chat.getConverstaionId() всегда будет возвращать одно и то же значение, даже если я сначала вызову talk.end() и talk.begin().

РЕДАКТИРОВАТЬ:

У меня есть страница для редактирования заказа. При нажатии на новую кнопку (меню) я хочу, чтобы она обновилась и начала новый разговор, чтобы добавить новый заказ. Итак, эта кнопка вызывает метод redirectToNewOrderPage(). Но у него есть проблема, описанная в коде и ранее.

@Named
@ConversationScoped
public class OrderEditBean implements Serializable {
    private static final long serialVersionUID = 1L;

    @Inject
    private Conversation conversation;

    [...]


    public void redirectToNewOrderPage() {
        String cid = createNewConversationId();
        setOrder(null);
        try {
            FacesContext.getCurrentInstance().getExternalContext().redirect("/OrdersManager/restricted/orders/edit.xhtml?cid=" + cid);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private String createNewConversationId() {
        String oldConversationId = null;
        String newConversationId = null;
        oldConversationId = conversation.getId();

        if (!conversation.isTransient() && conversation.getId() != null) {
            conversation.end();
        }

        conversation.begin();
        newConversationId = conversation.getId();

        // **************
        // at this point newConversationId is equal to 
        // oldConversationId if the conversation was NOT transient.
        // **************

        return newConversationId;
    }

}

person dgimenes    schedule 05.03.2012    source источник


Ответы (1)


То, что вы пытаетесь сделать, не работает. Объем разговора в CDI не такой мощный, как в Seam 2 (если вы оттуда).

person LightGuard    schedule 06.03.2012
comment
у вас есть идея альтернативы? Мне просто нужно было перенаправить на ту же страницу, но с новым разговором... - person dgimenes; 07.03.2012
comment
Нет простите. Может если покопаться в импле и посмотреть на его апис. - person LightGuard; 08.03.2012