Foro sobre Java EE > Obtener datos de un ArrayList
Hola, ¿porque no pones el codigo completo? Me gustaria saber si vuestro isp os cobra por palabra, no entiendo, ya que se empieza a poner el código, se pone todo. Veo jsp incompletos,¿ donde están los campos del formulario? ¿que tipos de campos son? Supongo que al poner el código, lo haces con la intención de que alguien lo pruebe, pero si esta incompleto es imposible.
Sinceramente, no entiendo bien que intentas hacer, quizá si pones todo el código pueda verlo. Bueno un saludo
Tienes razón, lo hice pensando que podría entenderse pero lo pongo completo a continuación:
Index.jsp >
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Bonus Calculation</title>
</head>
<h1>Bonus Calculation</h1>
<form method="get" action="/WebApplication4/NewServlet">
<table>
<tr>
<th>Numero SSN</th>
<th>Multiple</th>
</tr>
<c:forEach var="i" begin="0" end="2" step="1">
<tr>
<td></td>
<td></td>
</tr>
</c:forEach>
</table>
Enviar
Reiniciar
</form>
</html>
NewServlet.java >
package servlet;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(name = "NewServlet", urlPatterns = {"/NewServlet"})
public class NewServlet extends HttpServlet {
public double getBonus(String multiplier) {
return Double.parseDouble(multiplier) * 100.0;
}
/**
* Processes requests for both HTTP
* GET
and
* POST
methods.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
int counter = 0;
Enumeration Data = request.getParameterNames();
Map<String, String[]> calcul = new HashMap<String, String[]>();
ArrayList<String> myList = new ArrayList();
while (Data.hasMoreElements()) {
String Param = (String)Data.nextElement();
myList.add(Param);
calcul.put(Param, request.getParameterValues(Param));
counter++;
}
List<Map<String, String>> List = new ArrayList<Map<String, String>>();
for(int i=0; i<calcul.get(myList.get(0)).length; i++) {
Map<String, String> calcul2 = new HashMap<String, String>();
for(int j=0; j<counter; j++) {
calcul2.put(myList.get(j), calcul.get(myList.get(j))[i].toString());
}
List.add(calcul2);
}
/*
Aquí es donde debo sacar los datos del ArrayList para pasarlos al Beans y al .jsp
*/
Beans servlet = new Beans();
servlet.setNombre(nombre);
servlet.setBonus(bonus);
request.setAttribute("Beans", servlet);
request.getRequestDispatcher("bonus.jsp").forward(request, response);
}
Beans.java >
package servlet;
public class Beans {
private String nombre, bonus;
public String getNombre(){
return this.nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getBonus(){
return this.bonus;
}
public void setBonus(String bonus) {
this.bonus = bonus;
}
}
Bonus.jsp >
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<h1>Bonus Calculation:</h1>
<c:forEach items="${List}" var="calcul">
<div class="calcul">
<div class="nombreCalcul">
<c:out value="${calcul['nombre']}" />
</div>
<div class="bonusCalcul">
<c:out value="${calcul['bonus']}" />
</div>
</div>
</c:forEach>
</html>
Un saludo y gracias!
Sigo teniendo problemas en la publicación, la web me toma el código como una edición del post y cambia cosas. No se si al menos se ve mejor lo que pretendo, aún así, lo explico:
Introduzco unos datos en una tabla (.jsp) que son 'nombre' y 'multiplier'. NewServlet.java los va guardando en un ArrayList y necesito extraerlos para pasarlos al Beans.java y Bonus,jsp
a ver pon el código entre los tags "<"code">""<"/code">" sin las comillas, pones el código entre esos tags y así debería publicarlo todo sin que el foro procese los tags de tu código, Si ves que no puedes, mándame correo a loderain1@gmail.com con el proyecto y le echo un ojo a ver que pasa.
Index.jsp
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Bonus Calculation</title>
</head>
<h1>Bonus Calculation</h1>
<form method="get" action="/WebApplication4/NewServlet">
<table>
<tr>
<th>Numero SSN</th>
<th>Multiple</th>
</tr>
<c:forEach var="i" begin="0" end="2" step="1">
<tr>
<td></td>
<td></td>
</tr>
</c:forEach>
</table>
Envoyer
Réinitialiser
</form>
</html>
NewServlet.java
package servlet;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(name = "NewServlet", urlPatterns = {"/NewServlet"})
public class NewServlet extends HttpServlet {
public double getBonus(String multiplier) {
return Double.parseDouble(multiplier) * 100.0;
}
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
int counter = 0;
Enumeration Data = request.getParameterNames();
Map<String, String[]> calcul = new HashMap<String, String[]>();
ArrayList<String> myList = new ArrayList();
while (Data.hasMoreElements()) {
String Param = (String)Data.nextElement();
myList.add(Param);
calcul.put(Param, request.getParameterValues(Param));
counter++;
}
List<Map<String, String>> List = new ArrayList<Map<String, String>>();
for(int i=0; i<calcul.get(myList.get(0)).length; i++) {
Map<String, String> calcul2 = new HashMap<String, String>();
for(int j=0; j<counter; j++) {
calcul2.put(myList.get(j), calcul.get(myList.get(j))[i].toString());
}
List.add(calcul2);
}
Beans servlet = new Beans();
servlet.setNombre(nombre);
servlet.setBonus(bonus);
request.setAttribute("Beans", servlet);
request.getRequestDispatcher("bonus.jsp").forward(request, response);
}
}
Beans
package servlet;
public class Beans {
private String nombre, bonus;
public String getNombre(){
return this.nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getBonus(){
return this.bonus;
}
public void setBonus(String bonus) {
this.bonus = bonus;
}
}
Bonus.jsp
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<h1>Bonus Calculation:</h1>
<c:forEach items="${List}" var="calcul">
<div class="calcul">
<div class="nombreCalcul">
<c:out value="${calcul['nombre']}" />
</div>
<div class="bonusCalcul">
<c:out value="${calcul['bonus']}" />
</div>
</div>
</c:forEach>
</html>
La nueva variable bonus que aparece es la variable multiplier multiplicada por 100, simplemente hacer esa operación para que tenga un valor nuevo.
Me temo que el problema persiste :S
Te lo paso por correo.
Gracias!
Hola, soy nuevo aquí. Antes de nada comentar que estoy empezando con java y me cuesta bastante.
Os expongo el problema:
Debo hacer una aplicación web que recoja unos datos (.jsp) los pase a un servlet, este a un beans para encapsular los objetos en uno solo y la salida de los datos la muestre otra página .jsp
Primer .jsp >
<form method="get" action="/WebApplication4/NewServlet">
...
<c:forEach var="i" begin="0" end="2" step="1">
<tr>
<td></td>
<td></td>
</tr>
</c:forEach>
Servlet.java > (Aquí es donde tengo el problema y no se como tomar los datos, porque he probado de diferentes formas)
@WebServlet(name = "NewServlet", urlPatterns = {"/NewServlet"})
public class NewServlet extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
int counter = 0;
Enumeration Data = request.getParameterNames();
Map<String, String[]> calcul = new HashMap<String, String[]>();
ArrayList<String> myList = new ArrayList();
while (Data.hasMoreElements()) {
String Param = (String)Data.nextElement();
myList.add(Param);
calcul.put(Param, request.getParameterValues(Param));
counter++;
}
List<Map<String, String>> List = new ArrayList<Map<String, String>>();
for(int i=0; i<calcul.get(myList.get(0)).length; i++) {
Map<String, String> calcul2 = new HashMap<String, String>();
for(int j=0; j<counter; j++) {
calcul2.put(myList.get(j), calcul.get(myList.get(j))[i].toString());
}
List.add(calcul2);
}
/*AQUI ES DONDE DEBO EXTRAER LOS DATOS DEL ARRAY PARA PASARLOS AL BEANS*/
Beans servlet = new Beans();
servlet.setNombre(nombre);
servlet.setBonus(bonus);
/*Se llama bonus porque debo hacer una operación con el objeto "multiplier" */
request.setAttribute("Beans", servlet);
request.getRequestDispatcher("bonus.jsp").forward(request, response);
}
Beans.java >
package servlet;
public class Beans {
private String nombre, bonus;
public String getNombre(){
return this.nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getBonus(){
return this.bonus;
}
public void setBonus(String bonus) {
this.bonus = bonus;
}
}
Bonus.jsp >
...
<c:forEach items="${List}" var="calcul">
<div class="calcul">
<div class="nombreCalcul">
<c:out value="${calcul['nombre']}" />
</div>
<div class="bonusCalcul">
<c:out value="${calcul['bonus']}" />
</div>
</div>
</c:forEach>
Espero que puedan ayudarme, gracias.