0

I have the following form as a login page:

<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"> 
<h:body>
    <p:dialog visible="true" width="400" height="500"
        header="Acessar o Sistema" showHeader="false" modal="true" resizable="false" 
        rendered="#{login.verificaSessaoAtiva() == false}">
        <h:panelGrid style="margin: 0 auto;">
            <h:outputText styleClass="fa fa-lock fa-5x"/>
        </h:panelGrid>

        <h:form id="formLogin">
            <h:panelGrid cellspacing="10" style="text-align: center">
                <h:graphicImage library="images" name="logo-home.png" />
                <h1>Portal RH</h1>
                <h:messages id="messagesLogin" globalOnly="true" style="color:red;margin:8px;" />

                <!-- <h:outputText value="Username: " /> -->
                <p:inputText placeholder="Usuário" label="Username" value="#{login.username}"  size="40" required="true" requiredMessage="Campo Login é obrigatório" />
                <!-- <h:outputText value="Password: " /> -->
                <p:password placeholder="Senha" value="#{login.password}" size="40" required="true" requiredMessage="Campo Senha é obrigatório"/>
                <p:commandButton id="loginBtn" value="login" action="#{login.login}" update="messagesLogin"/>
            </h:panelGrid>
            <p:defaultCommand target="loginBtn" />
        </h:form>
    </p:dialog>
</h:body>
</html>

It works almost perfectly, if not a little problem. If I access the page for the first time, when entering login and password the form does not work. Even if I click on login button or press ENTER, nothing happens. But if I refresh the page (F5) the form works perfectly. I have no idea how to solve the problem.

I do not know if this could be the cause, but this error appears in the console with a link to jquery.js source in debugger:

"Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/."

Thanks for any help.

As requested, I'm editing with more info.

I'm using WildFly 14, Java 1.8 and Maven. My project was generated from the jboss-javaee6-webapp archetype.

This is my pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion> 

<groupId>br.com.graficasantamarta</groupId>
<artifactId>PortalRHGSM</artifactId>
<version>0.3.1-PRE-RELEASE</version>
<packaging>war</packaging>
<name>WildFly Quickstarts: PortalRHGSM6</name>
<description>A starter Java EE 7 webapp project for use on JBoss WildFly / WildFly, generated from the jboss-javaee6-webapp archetype</description>

<url>http://wildfly.org</url>
<licenses>
    <license>
        <name>Apache License, Version 2.0</name>
        <distribution>repo</distribution>
        <url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
    </license>
</licenses>

<properties>
    <!-- Explicitly declaring the source encoding eliminates the following 
        message: -->
    <!-- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered 
        resources, i.e. build is platform dependent! -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <!-- JBoss dependency versions -->
    <version.wildfly.maven.plugin>1.0.2.Final</version.wildfly.maven.plugin>

    <!-- Define the version of the JBoss BOMs we want to import to specify 
        tested stacks. -->
    <version.jboss.bom>8.2.1.Final</version.jboss.bom>

    <!-- other plugin versions -->
    <version.compiler.plugin>3.1</version.compiler.plugin>
    <version.surefire.plugin>2.16</version.surefire.plugin>
    <version.war.plugin>2.5</version.war.plugin>

    <!-- maven-compiler-plugin -->
    <maven.compiler.target>1.8</maven.compiler.target>
    <maven.compiler.source>1.8</maven.compiler.source>
</properties>


<dependencyManagement>
    <dependencies>
        <!-- JBoss distributes a complete set of Java EE 7 APIs including a Bill
            of Materials (BOM). A BOM specifies the versions of a "stack" (or a collection) 
            of artifacts. We use this here so that we always get the correct versions 
            of artifacts. Here we use the jboss-javaee-7.0-with-tools stack (you can
            read this as the JBoss stack of the Java EE 7 APIs, with some extras tools
            for your project, such as Arquillian for testing) and the jboss-javaee-7.0-with-hibernate
            stack you can read this as the JBoss stack of the Java EE 7 APIs, with extras
            from the Hibernate family of projects) -->
        <dependency>
            <groupId>org.wildfly.bom</groupId>
            <artifactId>jboss-javaee-7.0-with-tools</artifactId>
            <version>${version.jboss.bom}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.wildfly.bom</groupId>
            <artifactId>jboss-javaee-7.0-with-hibernate</artifactId>
            <version>${version.jboss.bom}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<repositories>
    <repository>
        <id>prime-repo</id>
        <name>PrimeFaces Maven Repository</name>
        <url>http://repository.primefaces.org</url>
        <layout>default</layout>
    </repository>
</repositories>

<dependencies>

    <!-- First declare the APIs we depend on and need for compilation. All 
        of them are provided by JBoss WildFly -->

    <!-- Import the CDI API, we use provided scope as the API is included in 
        JBoss WildFly -->
    <dependency>
        <groupId>javax.enterprise</groupId>
        <artifactId>cdi-api</artifactId>
        <scope>provided</scope>
    </dependency>

    <!-- Import the Common Annotations API (JSR-250), we use provided scope 
        as the API is included in JBoss WildFly -->
    <dependency>
        <groupId>org.jboss.spec.javax.annotation</groupId>
        <artifactId>jboss-annotations-api_1.2_spec</artifactId>
        <scope>provided</scope>
    </dependency>

    <!-- Import the JAX-RS API, we use provided scope as the API is included 
        in JBoss WildFly -->
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>jaxrs-api</artifactId>
        <scope>provided</scope>
    </dependency>

    <!-- Import the JPA API, we use provided scope as the API is included in 
        JBoss WildFly -->
    <dependency>
        <groupId>org.hibernate.javax.persistence</groupId>
        <artifactId>hibernate-jpa-2.1-api</artifactId>
        <scope>provided</scope>
    </dependency>

    <!-- Import the EJB API, we use provided scope as the API is included in 
        JBoss WildFly -->
    <dependency>
        <groupId>org.jboss.spec.javax.ejb</groupId>
        <artifactId>jboss-ejb-api_3.2_spec</artifactId>
        <scope>provided</scope>
    </dependency>

    <!-- JSR-303 (Bean Validation) Implementation -->
    <!-- Provides portable constraints such as @Email -->
    <!-- Hibernate Validator is shipped in JBoss WildFly -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <scope>provided</scope>
        <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <!-- Import the JSF API, we use provided scope as the API is included in 
        JBoss WildFly -->
    <dependency>
        <groupId>org.jboss.spec.javax.faces</groupId>
        <artifactId>jboss-jsf-api_2.2_spec</artifactId>
        <scope>provided</scope>
    </dependency>

    <!-- Now we declare any tools needed -->

    <!-- Annotation processor to generate the JPA 2.0 metamodel classes for 
        typesafe criteria queries -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-jpamodelgen</artifactId>
        <scope>provided</scope>
    </dependency>

    <!-- Annotation processor that raising compilation errors whenever constraint 
        annotations are incorrectly used. -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator-annotation-processor</artifactId>
        <scope>provided</scope>
    </dependency>

    <!-- Needed for running tests (you may also use TestNG) -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <scope>test</scope>
    </dependency>

    <!-- Optional, but highly recommended -->
    <!-- Arquillian allows you to test enterprise code such as EJBs and Transactional(JTA) 
        JPA from JUnit/TestNG -->
    <dependency>
        <groupId>org.jboss.arquillian.junit</groupId>
        <artifactId>arquillian-junit-container</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.jboss.arquillian.protocol</groupId>
        <artifactId>arquillian-protocol-servlet</artifactId>
        <scope>test</scope>
    </dependency>

    <!-- damyhonn.santos code start -->
    <!-- https://mvnrepository.com/artifact/com.sun.faces/jsf-impl -->
    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-impl</artifactId>
        <version>2.2.18</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.sun.faces/jsf-api -->
    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-api</artifactId>
        <version>2.2.18</version>
    </dependency>


    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.primefaces/primefaces -->
    <dependency>
        <groupId>org.primefaces</groupId>
        <artifactId>primefaces</artifactId>
        <version>6.2</version>
    </dependency>   

    <!-- https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc -->
    <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>mssql-jdbc</artifactId>
        <version>7.0.0.jre8</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.11.1</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.11.1</version>
    </dependency>

    <!-- Meu tema personalizado -->
    <dependency>
        <groupId>br.com.graficasantamarta</groupId>
        <artifactId>jquery-ui.custom</artifactId>
        <version>1.12.4</version>
    </dependency>

    <dependency>
        <groupId>br.com.graficasantamarta</groupId>
        <artifactId>PortalRHRelatFont</artifactId>
        <version>1.0.0</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.webjars/font-awesome -->
    <dependency>
        <groupId>org.webjars</groupId>
        <artifactId>font-awesome</artifactId>
        <version>4.7.0</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.omnifaces/omnifaces -->
    <dependency>
        <groupId>org.omnifaces</groupId>
        <artifactId>omnifaces</artifactId>
        <version>3.2</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.primefaces.themes/all-themes -->
    <dependency>
        <groupId>org.primefaces.themes</groupId>
        <artifactId>all-themes</artifactId>
        <version>1.0.10</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/net.sf.jasperreports/jasperreports -->
    <dependency>
        <groupId>net.sf.jasperreports</groupId>
        <artifactId>jasperreports</artifactId>
        <version>6.7.0</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>5.1.3.RELEASE</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.1.3.RELEASE</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-email -->
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-email</artifactId>
        <version>1.5</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.springframework/spring-orm -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>5.1.3.RELEASE</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/c3p0/c3p0 -->
    <dependency>
        <groupId>c3p0</groupId>
        <artifactId>c3p0</artifactId>
        <version>0.9.1.2</version>
    </dependency>

    <!-- damyhonn.santos code end -->
</dependencies>

<build>
    <!-- Maven will append the version to the finalName (which is the name 
        given to the generated war, and hence the context root) -->
    <finalName>${project.artifactId}</finalName>
    <plugins>
        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>${version.war.plugin}</version>
            <configuration>
                <!-- Java EE 7 doesn't require web.xml, Maven needs to catch up! -->
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>
        <!-- The WildFly plugin deploys your war to a local WildFly container -->
        <!-- To use, run: mvn package wildfly:deploy -->
        <plugin>
            <groupId>org.wildfly.plugins</groupId>
            <artifactId>wildfly-maven-plugin</artifactId>
            <version>${version.wildfly.maven.plugin}</version>
        </plugin>
    </plugins>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

<profiles>
    <profile>
        <!-- The default profile skips all tests, though you can tune it to run 
            just unit tests based on a custom pattern -->
        <!-- Seperate profiles are provided for running all tests, including Arquillian 
            tests that execute in the specified container -->
        <id>default</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>${version.surefire.plugin}</version>
                    <configuration>
                        <skip>true</skip>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>

    <profile>

        <!-- An optional Arquillian testing profile that executes tests
            in your WildFly instance -->
        <!-- This profile will start a new WildFly instance, and execute the
            test, shutting it down when done -->
        <!-- Run with: mvn clean test -Parq-wildfly-managed -->
        <id>arq-wildfly-managed</id>
        <dependencies>
            <dependency>
                <groupId>org.wildfly</groupId>
                <artifactId>wildfly-arquillian-container-managed</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </profile>

    <profile>
        <!-- An optional Arquillian testing profile that executes tests
            in a remote WildFly instance -->
        <!-- Run with: mvn clean test -Parq-wildfly-remote -->
        <id>arq-wildfly-remote</id>
        <dependencies>
            <dependency>
                <groupId>org.wildfly</groupId>
                <artifactId>wildfly-arquillian-container-remote</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </profile>

    <profile>
        <!-- When built in OpenShift the 'openshift' profile will be used when 
            invoking mvn. -->
        <!-- Use this profile for any OpenShift specific customization your app 
            will need. -->
        <!-- By default that is to put the resulting archive into the 'deployments' 
            folder. -->
        <!-- http://maven.apache.org/guides/mini/guide-building-for-different-environments.html -->
        <id>openshift</id>
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>${version.war.plugin}</version>
                    <configuration>
                        <outputDirectory>deployments</outputDirectory>
                        <warName>ROOT</warName>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>

</profiles>

I guess it's something related to jquery.js that comes when the project is created. Because the Synchronous problem.

This capture shows the Synchronous problem that appears in console when I try to login in the first load: Warning in console when I click ENTER or Login Button

This is my Login SessionScoped ManagedBean:

public class Login implements Serializable {

/**
 * 
 */
private static final long serialVersionUID = -2524582729413244598L;
private String username;
private String password;

private String senhaAlterada1;
private String senhaAlterada2;

private final static ResourceBundle PROPERTIES = ResourceBundle
        .getBundle("gsm");  
private static final Logger logger = LogManager.getLogger();

public void login() {

    Conexao.abrirConexaoDB();

    FacesContext context = FacesContext.getCurrentInstance();

    UsuarioBOImpl uBO = new UsuarioBOImpl();
    Usuario u = null;
    try {
        u = uBO.isUsuarioReadyToLogin(username, password);
    } catch (NoResultException e1) {
        String msg = "Credenciais inválidas.";
        logger.error(msg);
        context.addMessage(null, new FacesMessage(msg));
    } catch (PersistenceException e2) {
        String msg = "Falha no login, usuário pode não ter acesso ao sistema do Portal RH";
        context.addMessage(null, new FacesMessage(msg));
        logger.error(msg, e2);
    } catch (GsmException e3) {
        logger.error(e3.getMessage(), e3);
        context.addMessage(null, new FacesMessage(e3.getMessage()));
    } catch (Exception e) {
        String msg = "Falha ao verificar o login: ";
        logger.error(msg, e);
        context.addMessage(null, new FacesMessage(msg));
    }   

    if(null != u){          
        if (u.getAltSenhaProx() == 1) {
            PrimeFaces current = PrimeFaces.current();
            current.executeScript("PF('alteraSenhaVar').show();");
        } else {        
            context.getExternalContext().getSessionMap().put("user", username);
            context.getExternalContext().getSessionMap().put("userId", u.getId());
            context.getExternalContext().getSessionMap().put("nomeUsuario", u.getNome());
            context.getExternalContext().getSessionMap().put("matriculaUsuario", u.getMatricula());
            context.getExternalContext().getSessionMap().put("valorRegraAcesso", u.getValorRegraAcesso()); 
            context.getExternalContext().getSessionMap().put("codEmpUser", u.getCodEmp()); 
            context.getExternalContext().getSessionMap().put("plantasUser", u.getPlantas()); 
            context.getExternalContext().getSessionMap().put("versao", PROPERTIES.getString("versao"));
            try {
                context.getExternalContext().redirect(context.getExternalContext().getRequestContextPath()
                        + "/auth/home.xhtml");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

public boolean verificaSessaoAtiva() {

    FacesContext context = null;
    String user = null;
    try {
        context = FacesContext.getCurrentInstance();

        user = context.getExternalContext().getSessionMap().get("user").toString();
    } catch (Exception e1) {
        return false;
    }

    if (null != user) {
        try {
            context.getExternalContext().redirect(context.getExternalContext().getRequestContextPath()
                    + "/auth/home.xhtml");
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }
        return true;
    }
    return false;
}


public void logout() {
    FacesContext context = FacesContext.getCurrentInstance();
    context.getExternalContext().getSessionMap().clear();
    context.getExternalContext().invalidateSession();

    try {
        context.getExternalContext().redirect("login.xhtml?faces-redirect=true");   
    } catch (IOException e) {
        logger.error("Erro ao efetuar logout.",  e);
    }
}


public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

public String getSenhaAlterada1() {
    return senhaAlterada1;
}

public void setSenhaAlterada1(String senhaAlterada1) {
    this.senhaAlterada1 = senhaAlterada1;
}

public String getSenhaAlterada2() {
    return senhaAlterada2;
}

public void setSenhaAlterada2(String senhaAlterada2) {
    this.senhaAlterada2 = senhaAlterada2;
}

}

  • Does your condition `rendered="#{login.verificaSessaoAtiva() == false}"` change while processing your input? This may cause unexpected side effects. [Read this QA and add it to your favourites.](https://stackoverflow.com/questions/2118656/commandbutton-commandlink-ajax-action-listener-method-not-invoked-or-input-value) – Selaron Mar 13 '19 at 07:53
  • Thanks for your help. I tried to remove this condition, but it is still not working. So, I tried to change to and the problem has changed. Now all submits are working, but in the first one the login() mb method isn't called. The page is just refreshed when click login or ENTER. Then, in the second try it works fine. – Damyhonn Paulino Mar 13 '19 at 14:06
  • Can't reproduce this. Please edit your question to provide a [mcve] and used frameworks and versions. Do you get an exception in server console or log files? – Selaron Mar 14 '19 at 08:02
  • Thanks @Selaron I edited my post. Do you think you need more information? – Damyhonn Paulino Mar 15 '19 at 11:58

0 Answers0