Передача параметра между страницами

Я не могу передать простой параметр из одного Facelet в другой и установить свойство компонента... вот мой код:

Вызывающая страница, main.xhtml (только соответствующий код):

<h:link outcome="index" value="disconnect" >
     <f:param name="logout" value="true" />
</h:link>

Последняя страница, index.xhtml:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://xmlns.jcp.org/jsf/core">
    <f:metadata>
        <f:viewParam name="logout" value="#{indexBean.logout}"/>
        <f:event type="preRenderView" listener="#{indexBean.redirect}" />
    </f:metadata>
</html>

И IndexBean (только соответствующий код):

@Named
@RequestScoped
public class IndexBean {

    @Inject
    private Logger logger;

    private boolean logout;

    public IndexBean() {this.logout = false;}

    public void setLogout(boolean logout) {
            logger.log(Level.DEBUG, "logout changed");
            this.logout = logout;
    }

    public boolean isLogout() {return logout;}

    public void redirect() throws IOException {
        if(logout) {
            //Never get in here
        } else {
            //Always here
        }

    }
}

Я получаю параметр URL прямо по ссылке (http://localhost/index.xhtml?logout=true), но метод setLogout никогда не вызывается.

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

Есть идеи?

Заранее спасибо!!


person Alex    schedule 12.03.2015    source источник
comment
Какая реализация/версия JSF? Что-нибудь в логах сервера? Какие-нибудь сообщения, когда вы добавляете <h:messages>?   -  person BalusC    schedule 12.03.2015