захватить событие обновления до того, как будет применена бизнес-логика на стороне сервера - PullRequest
0 голосов
/ 16 ноября 2018

Вот как я реализовал область Flash на страницах, чтобы гарантировать доступность bean-компонента после перенаправления. Я использую JSF 2.1.19, поставляемый с JBoss EAP 6.

page1.xhtml

<h:commandLink value="#{result.itemVO.number}" action="#{itemBean.goToSecondPage}">
    <f:setPropertyActionListener target="#{itemBean.itemVO}" value="#{result.itemVO}" />
</h:commandLink>

ItemBean.Java
Это общий компонент на обеих страницах.

public String goToSecondPage() {
    Flash flash = FacesContext.getCurrentInstance().getExternalContext().getFlash();
    flash.put("itemBean", this);
    flash.setKeepMessages(true);
    flash.keep("itemBean");
    return "secondPage";
}

@PostConstruct
public void init() {
    Flash flash = FacesContext.getCurrentInstance().getExternalContext().getFlash();
    ItemBean itemBean = (ItemBean) flash.get("itemBean");
    //Number
    itemBean.getItemVO.getNumber();
}

Объект itemBean доступен из flash в методе init после перенаправления со страницы1.

Но когда я перезагружаю страницу на странице 2, флэш-память пуста, даже если я вызываю setKeepMessages (true). Есть много полей, которые я загружаю на страницу на основе itemVO, но их нет после перезагрузки, и страница отображается пустой. Либо я хочу перехватить событие перезагрузки и прекратить рендеринг страницы, либо мне нужно найти способ сохранить объект Flash в случае перезагрузки.

Я просмотрел этот пост , чтобы сохранить объект Flash после перезагрузки, но там говорится об использовании EL. Но в моем случае мне нужно получить к нему доступ в методе bean post construct.

Я также попробовал навигационный интерфейс API для захвата события обновления в javascript, как объяснено здесь . Но это вызывается после инициализации bean-компонента, чего я хочу избежать из-за некоторых проблем с унаследованным кодом.

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