首先,我开发了一个Web应用程序,并使用 JSF 2.2.6 。
用户名和密码保存时,用户权限在"登录" Chrome或Firefox的页面,其他空 h:inputText 和 h:inputSecret 在"管理员面板"使用这些保存的信息(登录过程中的名称和密码)自动填充页面。
我使用JSF 2.x的模板功能来设计我的页面。我在这个模板中为我的所有页面使用相同的表单(id = mainForm)。但是,登录页面的输入元素的ID与"管理面板"中的输入元素的ID不同。页。
在我找到问题和答案 - Unwanted Autofills后,我开始使用" autocomplete =' off'" 作为&的输入#34;管理员面板"。然而,没有任何改变。
为什么它能正常运作?我该如何处理这个问题。我想在管理面板中显示h:inputText和h:inputSecret标记,但实际上没有初始记录。
所有反馈都赞赏!
登录页面;
<ui:composition template="...">
<ui:define name="headContent">
<h:outputStylesheet library="css" name="loginPage.css" />
</ui:define>
<ui:define name="content">
<div id="loginArea">
<h:inputText id="nameInput" class="nameInput" value="#{loginFacade.loginName}" />
<h:inputSecret id="passInput" class="passInput" value="#{loginFacade.loginPass}" />
<h:commandButton id="..." class="sendInput" image="..."
binding="..." action="..." />
<h:messages class="errorMessage" layout="table" />
<p:defaultCommand target="sendInput" />
</div>
</ui:define>
</ui:composition>
管理面板页面;
...
<td>
<span jsfc="h:outputLabel" value="#{msgs['adminPanel.userName']}"></span>
</td>
<td>
<input jsfc="h:inputText" id="usrDetUsrName" class="usrDetLbl" value="#{adminPanelFacade.tempUsr.USER_NAME}" disabled="#{adminPanelFacade.newRecFlag}" autocomplete="off"/>
</td>
</tr>
<tr class="usrDetTblRow">
<td>
<span jsfc="h:outputLabel" value="#{msgs['adminPanel.password']}"></span>
</td>
<td>
<input jsfc="h:inputSecret" id="usrDetPass" class="usrDetLbl" redisplay="true" value="#{adminPanelFacade.tempUsr.PASSWORD}" autocomplete="off"/>
</td>
...
答案 0 :(得分:0)
Google Chrome and IE (v11 onwards)
不尊重autocomplete=off
,而是支持为任何网站保存密码的可用性。
他们将属性autocomplete=off
更改为true。
您需要开发一个自定义脚本,将属性更改回“关闭”
您可以使用以下脚本
添加重置功能以在表单中添加autocomplete "off"
function setAutocomplete()
{
if (navigator.userAgent.toLowerCase().indexOf('chrome') >= 0)
{
setTimeout(function () {
document.getElementById('myForm').setAttribute('autocomplete', 'off');
}, 100);
}
}
答案 1 :(得分:0)
在Fire Fox和chrome浏览器中它对我来说很好用,你可以使用2个空输入标签:
<input name="dummyinput" id="dummyinput" type="text" />
<input name="dummypassword" type="password" id="dummypassword" />
输入你的名字之前(h:inputText),然后添加另一个空的输入密码字段说
密码字段(h:inputSecret)之后的<input id=dummypassword2" name=dummypassword2" type="password" />
,将不会存储登录凭据。