Я не могу передать простой параметр из одного 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, правильно изменить геттер и сеттер и посмотреть, что произойдет, но сеттер никогда не вызывается...
Есть идеи?
Заранее спасибо!!
<h:messages>
? - person BalusC   schedule 12.03.2015