f: viewAction ignorado, quando commandButton navega para a página
Estou com um problema com o recurso JSF 2.2<f:viewAction action="#{...}/>
. Coloquei essa tag na minha página XHTML, chamadaviewActionStart.xhtml:
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head />
<h:body>
<f:view>
<f:metadata>
<f:viewAction action="#{redirect.getView()}" onPostback="true"
immediate="true" />
</f:metadata>
</f:view>
<h:outputText value="If you see that text, the viewAction was not performed." />
</h:body>
</html>
Se eu visitar esta página XHTML diretamente, tudo funcionará bem: o métodoredirect.getView()
é chamado e um redirecionamento para outra página é executado.
Agora eu tenho minha página de destino, que é mostrada antes dessa viewActionStart-Page. Há um botão, que basicamente deve navegar até minha viewActionStart-Page para mostrar o<f:viewAction>
efeito. O código a seguir é desta página de destinoindex.xhtml:
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
</h:head>
<h:body>
<f:view>
<h:form>
<h:commandButton action="viewActionStart.xhtml"
value="To f:viewAction Page" />
</h:form>
</f:view>
</h:body>
</html>
Se eu pressionar esse botão de comando, o conteúdo do viewActionStart.xhtml será mostrado. Por que o JSF ignora o<f:viewAction>
? Eu não entendo porque oviewAction
não funciona em todo carregamento de página. Eu tentei com aquelesonPostback
e atributos "imediatos", mas nada muda.
Outro resultado estranho é que, depois que eu clico no botão de comando e vejo o conteúdo de viewActionStart.xhtml, o URL ainda permanece emlocalhost: 8080 / UIIncludeTest / index.xhtml. Mas não deve parecer esse URL comolocalhost: 8080 / UIIncludeTest / viewActionStart.xhtml após o botão de comando faz a navegação?
Estou fazendo algo errado? Ou eu simplesmente entendi mal<f:viewAction>
? O estranho é que funciona se eu navegar diretamente para viewActionStart.xhtml.
Estou tentando fazer isso funcionar:
JSF-2.2.6Tomcat-7.0.47PrimeFaces 5.0Eu li os vários posts relacionados a<f:viewAction>
mas nada ajudou.