3 Replies Latest reply on Sep 10, 2008 7:25 PM by hicham

    Firefox 3 remember me

    hicham

      I am implementing a simple application that diplay registred users using seam 2.0.2.GA.


      I have an issue using firefox 3 :


      When I log in through the loging page:
               


      Email    :   admin@domain.com
      Password  : xxxxxxxxxxx
      Remember me  yes
      

                


      And goes to the page of user Creation. I find that my form is pre-filled in this way :



      Email :
      Name : admin@domain.com
      Password  : xxxxxxxxxxx
      



      The NAME is pre-filled by the used logging EMAIL and the password is filled by the logging password.


      This happens when I click on REMEMBER password in Firefox 3.



      My user entity :




      @Entity
      @Table(name = "user", catalog = "usersCat")
      public class User extends AbstractEntity {
      
              private static final long       serialVersionUID        = 1L;
      
              public static enum Role {
                      admin, user
              }
      
              @Column(name = "email", nullable = false)
              @NotEmpty
              @Email
              private String  email                                   = null;
      
              @Column(name = "name", nullable = false)
              @NotEmpty
              @Length(min = 1, max = 255)
              private String  name                                    = null;
      
              @Column(name = "password", nullable = false)
              @NotEmpty
              @Length(min = 1, max = 20)
              private String  password                                = null;
      
              @Column(name = "information", length = 65535)
              @Length(max = 65535)
              private String  information                             = null;
      
              @Column(name = "role", nullable = false)
              @NotNull
              @Enumerated(EnumType.STRING)
              private Role    role                                    = null;
      
      



      Login page :


      <!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
                            "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      
      <ui:composition xmlns="http://www.w3.org/1999/xhtml"
              xmlns:s="http://jboss.com/products/seam/taglib"
              xmlns:ui="http://java.sun.com/jsf/facelets"
              xmlns:f="http://java.sun.com/jsf/core"
              xmlns:h="http://java.sun.com/jsf/html"
              xmlns:a="http://richfaces.org/a4j"
              xmlns:rich="http://richfaces.org/rich" template="layout/template.xhtml">
      
              <ui:define name="body">
      
                      <h:messages globalOnly="true" styleClass="message" id="globalMessages" />
      
                      <h:form id="login" styleClass="edit">
      
                              <rich:panel>
                                      <f:facet name="header">Login</f:facet>
      
                                      <s:decorate id="usernameDecoration" template="layout/edit.xhtml">
                                              <ui:define name="label">Email</ui:define>
                                              <h:inputText id="username" value="#{identity.username}" />
                                      </s:decorate>
      
                                      <s:decorate id="passwordDecoration" template="layout/edit.xhtml">
                                              <ui:define name="label">Password</ui:define>
                                              <h:inputSecret id="password" value="#{identity.password}" />
                                      </s:decorate>
      
                                      <s:decorate id="rememberMeDecoration" template="layout/edit.xhtml">
                                              <ui:define name="label">Remember me</ui:define>
                                              <h:selectBooleanCheckbox id="rememberMe"
                                                      value="#{identity.rememberMe}" />
                                      </s:decorate>
      
                                      <s:div style="clear: both">
                                              <span class="required">*</span>
                                              required fields
                                      </s:div>
      
                              </rich:panel>
      
                              <s:div styleClass="actionButtons">
                                      <h:commandButton value="Login" action="#{identity.login}" />
                              </s:div>
      
                      </h:form>
      
              </ui:define>
      </ui:composition>
      
      



      User Edit :



      <!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
                                   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      
      <ui:composition xmlns="http://www.w3.org/1999/xhtml"
                      xmlns:s="http://jboss.com/products/seam/taglib"
                      xmlns:ui="http://java.sun.com/jsf/facelets"
                      xmlns:f="http://java.sun.com/jsf/core"
                      xmlns:h="http://java.sun.com/jsf/html"
                      xmlns:a="http://richfaces.org/a4j"
                      xmlns:rich="http://richfaces.org/rich"
                      template="layout/template.xhtml">
                             
      <ui:define name="body">
          
          <h:messages globalOnly="true" styleClass="message" id="globalMessages"/>
      
          <h:form id="user" styleClass="edit">
          
              <rich:panel>
                  <f:facet name="header">#{userHome.managed ? 'Edit' : 'Add'} User</f:facet>
      
      
      
                  <s:decorate id="emailDecoration" template="layout/edit.xhtml">
                      <ui:define name="label">Email</ui:define>
                      <h:inputText id="email" value="#{userHome.instance.email}" size="50" required="true"/>
                  </s:decorate>
      
                  <s:decorate id="nameDecoration" template="layout/edit.xhtml">
                      <ui:define name="label">Name</ui:define>
                      <h:inputText id="name" value="#{userHome.instance.name}" size="50" required="true"/>
                  </s:decorate>
      
                  <s:decorate id="passwordDecoration" template="layout/edit.xhtml">
                      <ui:define name="label">Password</ui:define>
                      <h:inputSecret id="password" value="#{userHome.instance.password}" size="50" required="true"/>
                  </s:decorate>
                  
                  <s:decorate id="informationDecoration" template="layout/edit.xhtml">
                      <ui:define name="label">Information</ui:define>
                      <h:inputTextarea id="information" cols="80" rows="4" value="#{userHome.instance.information}"/>
                  </s:decorate>
      
                  <s:decorate id="roleDecoration" template="layout/edit.xhtml">
                      <ui:define name="label">Role</ui:define>
                      <h:selectOneMenu value="#{userHome.instance.role}" required="true">
                              <s:selectItems var="_role" value="#{userHome.getRoles()}" label="#{_role.toString()}" 
                                      noSelectionLabel="Please select a role"/>
                              <s:convertEnum/>
                      </h:selectOneMenu>
                  </s:decorate>
      
              
                  <div style="clear:both">
                      <span class="required">*</span> 
                      required fields
                  </div>
                  
              </rich:panel>
                      
              <div class="actionButtons">
      
                  <h:commandButton id="save" value="Save" action="#{userHome.persist}" disabled="#{!userHome.wired}" rendered="#{!userHome.managed}"/>  
                                                        
                  <h:commandButton id="update" value="Save" action="#{userHome.update}" rendered="#{userHome.managed}"/>
                                                        
                  <h:commandButton id="delete" value="Delete" action="#{userHome.remove}" immediate="true" rendered="#{userHome.managed}"
                      onclick="return confirmDelete(null, '#{userHome.instance.name}');"/>
                          
                  <s:button id="done" value="Done" propagation="end" view="/User.xhtml" rendered="#{userHome.managed}"/>
                      
                  <s:button id="cancel" value="Cancel" propagation="end" view="/#{empty userFrom ? 'UserList' : userFrom}.xhtml" rendered="#{!userHome.managed}"/>
      
              </div>
          </h:form>
      
      </ui:define>
      
      </ui:composition>
      



      I have no problem creating and saving a new user. and my application works perfectly under IE7.
      It works on Firefox 3, if only I choose not to remember my password by firefox.


      Is any one experiencing this strange issue?


      Thank you.