JSF как принудительно перезагрузить текущую страницу - PullRequest
2 голосов
/ 14 марта 2011

Я использую JSF 1.2.У меня есть представление, в котором у меня есть ах: commandButton со следующим действием:

#{myBean.saveSomeData}

Когда я нажимаю на кнопку, я хочу сохранить некоторые данные, и как данные, которые сохраняются, могут изменить отображениеНа мой взгляд, я хотел бы принудительно перезагрузить (например, CTRL + F5 в моем браузере) моей страницы.

Чтобы сделать это, я подумал о следующем коде:

public void saveSomeData() {
            ... Save some data ... 

        FacesContext context = FacesContext.getCurrentInstance();
        String viewId = context.getViewRoot().getViewId();
        ViewHandler handler = context.getApplication().getViewHandler();
        UIViewRoot root = handler.createView(context, viewId);
        root.setViewId(viewId);
        context.setViewRoot(root);
}

Но когда я это делаю, компоненты дерева моего представления не перезагружаются.

Итак, я не знаю, как сделать эту перезагрузку.Кто-нибудь мог бы иметь представление о том, как это сделать?

Заранее благодарим за помощь.

Сильвен.

1 Ответ

1 голос
/ 14 марта 2011

Добавьте заголовки без кэширования к ответу, чтобы браузер никогда не кэшировал страницу.Вы можете сделать это с Filter, который отображается на интересующий шаблон URL.Например *.jsf или просто на FacesServlet.Пусть Filter устанавливает следующие заголовки в методе doFilter():

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0); // Proxies.
...