我正在尝试跳过浏览器提示以保存登录表单的密码。
我已经检查了this question,并添加了autocomplete =" off"属性(在表单和字段上)。
只需导航到另一个页面即可。但是当我使用?faces-redirect=true
时(在我的主页按钮中),我会收到提示。
admin.xhtml:
<h:form id="form" autocomplete="off">
<p:growl id="growl" showDetail="true" sticky="false" life="3000" />
<p:layout fullPage="true">
<p:layoutUnit position="center" >
<p:panel id="loginPanel" visible="#{not admin.loggedIn}">
<h:panelGrid columns="2" cellpadding="5">
<f:facet name="header">
<h:outputLabel value="Administration" />
</f:facet>
<h:outputLabel for="username" value="Username:" />
<p:inputText id="username" value="#{admin.username}" required="true" autocomplete="off" label="username" />
<h:outputLabel for="password" value="Password:" />
<p:password id="password" value="#{admin.password}" required="true" autocomplete="off" label="password" />
<f:facet name="footer">
<p:commandButton value="Login" update="growl loginPanel logoutPanel"
process="loginPanel" actionListener="#{admin.login}" />
</f:facet>
</h:panelGrid>
</p:panel>
</p:layoutUnit>
<p:layoutUnit position="north" size="85">
<p:panel id="logoutPanel">
<p:commandButton value="Home" process="@this"
action="#{menuBean.goHome}" actionListener="#{admin.logout}" />
<p:commandButton rendered="#{admin.loggedIn}"
value="Logout" update="loginPanel logoutPanel"
process="@this" actionListener="#{admin.logout}" />
</p:panel>
</p:layoutUnit>
</p:layout>
</h:form>
MenuBean使用:
public String goHome() {
String goToPage = "home.xhtml?faces-redirect=true";
return goToPage;
}
有什么方法可以解决这个问题吗?
更新我使用的是JSF 2.2.0和Primaces 5.1。问题出现在Chrome 42.0上,我将测试并更新其他浏览器。
更新2 似乎可以正常使用IE 8
我尝试了passthrough属性,(我可以在生成的源代码中看到autocomplete=off
),但行为是相同的。
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:a="http://xmlns.jcp.org/jsf/passthrough"
xmlns:p="http://primefaces.org/ui">
<h:form id="form" a:autocomplete="off">
更新3 我尝试通过以下方式禁用缓存:
为 admin.xhtml 添加了元标记:
<h:head>
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
<title>Administration</title>
添加了this response所示的NoCacheFilter
。
HTTP标头已正确更新:
当我在Chrome中重定向到 home.xhtml 时,我会收到提示。