我的网络应用程序有问题。我似乎在自动填写我的用户名和密码字段。登录后还可以,问题是即使我将自己的textFields(InputText)命名为其他名称,即使在创建帐户页面中仍然可以自动填充。我在chrome和firefox中都尝试过,但还是一样。

这是该应用程序和代码的一些屏幕截图。

对于创建帐户页面



     <p:outputLabel id="userLabel" value="Username*" />
     <p:inputText id="userField"
        value="#{marketingPersonController.marketingPerson.account.username}"
        required="true" requiredMessage="Username* value is required."
        label="UsernameInput">

        <f:ajax
            listener="#{marketingPersonController.checkUsernameIfAvailable()}"/>
     </p:inputText>

     <p:outputLabel id="passLabel" value="Password*"/>
     <p:password id="passField"
        value="#{marketingPersonController.marketingPerson.account.password}"
        feedback="true" inline="true"
        match="confirmPassField" required="true"
        requiredMessage="Password* value is required" label="PasswordInput"
        validatorMessage="Password must be at least 6 characters / Password does not match">
        <f:validateLength minimum="6" />
     </p:password>


对于我的登录



这是我的登录代码:

<table>
   <tr>
      <td><p:outputLabel rendered ="#{!accountController.loggedIn}" value ="Username:"/></td>
      <td><p:inputText rendered="#{!accountController.loggedIn}" id="username" value="#{accountController.account.username}"/></td>
      <td><p:message for="username" rendered ="false"/></td>
   </tr>
   <tr>
      <td><p:outputLabel rendered="#{!accountController.loggedIn}" value="Password:"/></td>
      <td><p:password rendered="#{!accountController.loggedIn}" id="password" value="#{accountController.account.password}"/></td>
      <td><p:message for="password" rendered ="false"/></td>
   </tr>

最佳答案

您需要关闭自动填充功能,但是jsf没有自动填充属性。因此,这意味着您必须基于每个输入将其关闭或为UIForm编写自定义渲染器。

当前存在一个未解决的问题,要求将此属性添加到:JSF spec418。当前,它计划在JSF 2.2中使用。

同时,您可以使用OmniFaces Html5RenderKit获得对组件上的autocomplete =“ off”的支持。

09-16 12:16