Проблема PrimeFaces 6.2 с CDI Conversations

Я обновил версию PrimeFaces до 6.2. Все прошло хорошо, за исключением проблемы с управлением разговорами CDI.
После обновления кажется, что диалог инициализируется при первом доступе к странице, но он теряется непосредственно перед первым вызовом контроллера. Фактически, при доступе к странице новый диалог инициализируется (и это правильно). Но после первого вызова метода контроллера новый диалог инициализируется, теряя предыдущий и все значения его параметров. Следующие вызовы поддерживают последний разговор как обычно.

С PrimeFaces 6.1 (и предыдущей версией) этого никогда не было.

Это ошибка или недостаток моего?

После доступа к странице отображается текст "Значение инициализации с идентификатором разговора = 1".
При нажатии на кнопку отображаемый текст изменится на "Значение, установленное с идентификатором разговора = 2".
Следующие клики поддерживают cid = 2.

контроллер

@Named
@ConversationScoped
@LoggedIn
public class TestController implements Serializable {
    static final long serialVersionUID = 69823746898775L;
    @Inject protected Conversation conversation;
    @Inject protected FacesContext facesContext;
    rivate String outputValue;

    @PostConstruct
    public void init() throws IOException {
        if (conversation.isTransient()) {
            conversation.begin();
            conversation.setTimeout(1800000);
        }
        outputValue = "Init value with conversation id = " + conversation.getId();
    }

    public void handleCall() {
        outputValue = "Value set with conversation id = " + conversation.getId();
    }

    public String getOutputValue() {
        return outputValue;
    }
    public void setOutputValue(String outputValue) {
        this.outputValue = outputValue;
    }

}

Страница JSF

<?xml version="1.0" encoding="UTF-8"?>
<f:view xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:c="http://java.sun.com/jsp/jstl/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:p="http://primefaces.org/ui" contentType="text/html">
<html>
    <h:head>
        <meta http-equiv="X-UA-Compatible" content="IE=8" />
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <link rel="shortcut icon" type='image/x-icon' href='favicon.ico'/>
        <ui:insert name="head" />
    </h:head>
    <h:body onload="javascript: if ('#{param.sessionExpired}'.length != 0) PF('loginDialog').show()">

        <h:form id="testForm">

        <p:commandButton action="#{testController.handleCall()}" value="Make a call" update="@form" />

        <h:outputText value="#{testController.outputValue}" />

        </h:form>

    </h:body>
    </html>
</f:view>

0 ответов

Другие вопросы по тегам