我将以下行添加到web.xml
<session-config>
<session-timeout>1</session-timeout>
</session-config>
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>/login/login.xhtml</location>
</error-page>
在会话过期时重定向到登录页面,它实际上是重定向但是字段名称和密码以及“fazer login”按钮消失了:
下面是登录页面中的相关代码:
<div class="conteudo">
<div class="icone-produto"></div>
<div class="coluna-direita">
<div class="logo-produto" alt="Wplex-EP"></div>
<div class="card signin-card">
<h:panelGrid columns="1">
<h:dataTable value="#{funcionarioController.lista}"
rendered="false"></h:dataTable>
<h:dataTable value="#{escalaController.lista}" rendered="false"></h:dataTable>
<h:dataTable value="#{indisponibilidadeController.lista}"
rendered="false"></h:dataTable>
<h:dataTable value="#{programacoesController.programacoes}"
rendered="false"></h:dataTable>
<h:dataTable value="#{funcionarioController.lista}"
rendered="false"></h:dataTable>
<h:inputText class="texto" placeholder="Usuário"
value="#{loginController.login}" />
<h:inputSecret class="texto" placeholder="Senha"
value="#{loginController.senha}"/>
<h:commandLink id="fazerLoginId" action="#{loginController.isLoginOk}"
styleClass="btn btn-wplex mouseon">
Fazer Login
</h:commandLink>
</h:panelGrid>
</div>
</div>
</div>
答案 0 :(得分:3)
消失的元素实际上是所有JSF组件。这部分,
<location>/login/login.xhtml</location>
必须与同一<url-pattern>
中的FacesServlet
条目的web.xml
匹配才能使其解析XHTML并将JSF组件呈现为HTML。显然你在*.xhtml
上没有任何人。也许是*.jsf
或/faces/*
。您需要相应地更改<location>
以匹配<url-pattern>
的{{1}},以便调用它。例如。如果是FacesServlet
:
*.jsf
另一种方法是只使用<location>/login/login.jsf</location>
<url-pattern>
,这样您就不需要弄乱虚拟网址并与之混淆。
*.xhtml