JSF - Páginas JSF simultáneas sobreescriben los valores entre si

 
Vista:

Páginas JSF simultáneas sobreescriben los valores entre si

Publicado por Oscar L (1 intervención) el 08/10/2020 21:20:19
Buenas tardes, tengo una página JSF desde la cual quiero enviar datos para un login en un servlet; el problema es que cuando se abren dos paginas al mismo tiempo y en las dos se introducen datos para enviar al servlet los datos introducidos en la primera se sobreescriben en la segunda y son los que son enviados al servlet. Agradezco su tiempo y ayuda.

Utilizo un managed bean con ambito ViewScoped, esta es una parte donde obtengo los datos del formulario y los guardo en un arraylist:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public class nuevoTest implements Serializable {
    String usuario;
    String contrasenia;
    ArrayList<Order> dlList = new ArrayList<Order>();
 
        public void datosLogin(){
          usuario = usua.getValue().toString();
          contrasenia = contrasena.getValue().toString();
            System.out.println("us  "+usuario);
            System.out.println("con  "+contrasenia);
          Order uc = new Order(usuario,contrasenia);
          dlList.add(uc);
        }
    public static class Order {
    String usuario;
    String contrasena;
 
            public Order(String usuario,String contrasena){
        this.usuario = usuario;
        this.contrasena = contrasena;
        }
           public void setUsuario(String usuario) {
            this.usuario = usuario;
        }
 
        public String getUsuario() {
            return usuario;
        }
                public void setContrasena(String contrasena) {
            this.contrasena = contrasena;
        }
 
        public String getContrasena() {
            return contrasena;
        }
}

Esta es la JSF con el formulario y el botón que llama al servlet:

1
2
3
4
5
6
7
8
9
10
11
12
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE html>
<f:view xmlns:f="http://java.sun.com/jsf/core" xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
    <af:document title="logon.jsf" id="d1">
        <af:form id="f1">
            <af:inputText label="Usuario" id="it1" autoSubmit="true" binding="#{viewScope.nt.usua}"/>
            <af:inputText label="Contraseña" id="it2" autoSubmit="true" binding="#{viewScope.nt.contrasena}"/>
            <af:button text="button 1" id="b1" destination="/servlet1" />
        </af:form>
    </af:document>
    <!--oracle-jdev-comment:preferred-managed-bean-name:nt-->
</f:view>

y aquí el código del servlet donde llamo al método que obtiene los datos del formulario:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package view;
 
import java.io.IOException;
import java.io.PrintWriter;
 
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
 
@WebServlet(name = "Servlet1", urlPatterns = { "/servlet1" })
public class Servlet1 extends HttpServlet {
    private static final String CONTENT_TYPE = "text/html; charset=UTF-8";
    String user;
    String pass;
    nuevoTest nt = new nuevoTest();
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
    }
 
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        nt.datosLogin();
        for(int i=0;i<nt.dlList.size();i++){
          user = nt.dlList.get(i).getUsuario();
          pass = nt.dlList.get(i).getContrasena();
            System.out.println("usuario nm  "+i+" "+user);
        }
        response.setContentType(CONTENT_TYPE);
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head><title>Servlet1</title></head>");
        out.println("<body>");
        out.println("<p>Nombre usuario</p>");
        out.println(user);
        out.println("</body></html>");
        out.close();
 
    }
 
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType(CONTENT_TYPE);
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head><title>Servlet1</title></head>");
        out.println("<body>");
        out.println("<p>The servlet has received a POST. This is the reply.</p>");
        out.println("</body></html>");
        out.close();
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder