Error showing an Array / objects in Spring MVC

0

I have to collect data from a form, It is composed of questions and each has sub questions.

My idea is to create the subquery class and pass it to the question class and return an array with the questions in view, but it does not show me anything.

Subquery Class:

public class Subpregunta {

    private LinkedList La_subpregunta;

    public Subpregunta() {
        La_subpregunta = new LinkedList();
    }

    public void Agregar_subpregunta(String subpreguntita) {
        La_subpregunta.add(subpreguntita);
    }

    public LinkedList getLa_subpregunta() {
        return La_subpregunta;
    }

Question Class

public class Pregunta {



       private int Numero_pregunta; 
        private String Descripcion; 
        private LinkedList Subpreguntas; 

        public Pregunta(int numero, String desc, LinkedList sub){
            this.Numero_pregunta = numero;
            this.Descripcion = desc;
            this.Subpreguntas = sub;
        }
 public int getNumero_pregunta() {
        return Numero_pregunta;
    }

    public String getDescripcion() {
        return Descripcion;
    }

    public LinkedList getSubpreguntas() {
        return Subpreguntas;
    }

On the controller:

 ModelAndView vista = new ModelAndView();
        vista.setViewName("Vistas/pruebas");

        //Recojo la opción.
        String opcion = request.getParameter("txtopciones");

        //Recojo todas las preguntas.
        String[] preguntas = request.getParameterValues("pregunta[]");

        //Miro el total de preguntas.
        int cant_preguntas = preguntas.length;

  //LinkedList para guardar las preguntas.
        LinkedList lista_preguntas = new LinkedList();


        switch (opcion) {

            case "1": 

          int numero_subpregunta=0; 

        //El objeto pregunta.
        Pregunta obj_pregunta;

        //El objeto para las subpreguntas.
        Subpregunta obj_subpregunta;

        //Recojo las subpreguntas del formulario.
        String[] subpreguntas = request.getParameterValues("subpregunta[]");


        //Recorro todas las preguntas.
        for (int i = 0; i < cant_preguntas; i++) {

           obj_subpregunta = new Subpregunta();

           //Cada pregunta tiene 4 subpreguntas, por tanto hay que agrupar.
           if(numero_subpregunta % 4 != 0){ 

               //Guardo en un array la subpregunta.
               for (int j = 0; j < numero_subpregunta; j++) {
                    obj_subpregunta.Agregar_subpregunta(subpreguntas[numero_subpregunta]);
               }

           } // Terminado este punto tengo un array con 4 subpreguntas.

              //Creo un objeto pregunta->numero de la pregunta,la descripción, y el array de las subpreguntas.
              obj_pregunta = new Pregunta(i,preguntas[i],obj_subpregunta.getLa_subpregunta());

              //Guardo en un Array las preguntas.
              lista_preguntas.add(obj_pregunta);

        }//fin for 
                break;
            case "2":
                break;
            case "3":
                break;
        } 

        vista.addObject("examen", lista_preguntas);

        return vista;
    }

In the view:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
         <c:forEach items="${examen.Descripcion}" var="dato">
             <c:out value="${dato}"/>  <br>
         </c:forEach>

    </body>
</html>

At the moment just to see if it was going well I wanted to see if it showed well "cities - colors".

How can I solve it?

    
asked by EduBw 11.03.2018 в 21:48
source

1 answer

1
 <c:forEach items="${examen.Descripcion}" var="dato">
    <c:out value="${dato}"/>  <br>
 </c:forEach>

Several things:

  • In EL, an attribute is accessed by the name of the attribute in lowercase. E.g. ${examen.descripcion} The EL processor will already make sure that this calls examen.getDescripcion() .

  • examen is a List , not a bean . So it does not have a descripcion attribute. What you want is:

    <c:forEach items="${examen}" var="dato"> <!-- En cada iteracion poner el elemento en dato -->
       <c:out value="${dato.descripcion}"/>  <br>
    </c:forEach>
    
answered by 11.03.2018 / 22:02
source