Me gustaría mostrar mi Lista de los valores de mi vista jsp, pero no soy capaz de hacer esto.

Aquí está mi clase de controlador de abajo, que es sólo añadir Lista a la ModelAndView mapa y que se redireccione a mi index.jsp página.

EmployeeController

@Controller
public class EmployeeController {

@RequestMapping(value={"/employee"}, method = RequestMethod.GET)
public String listEmployee(){    
    System.out.println("Kontroler EmployeeController");
    LinkedList<String> list = getList();
    ModelAndView map = new ModelAndView("index");
    map.addObject("lists", list);

    return map.getViewName();
}

private LinkedList<String> getList(){
    LinkedList<String> list = new LinkedList<>();

    list.add("Item 1");
    list.add("Item 2");
    list.add("Item 3");

    return list;
}

}

índice.jsp

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Welcome to Spring Web MVC project</title>
</head>

<body>
    <h1>Index page</h1>
    <h1>${msg}</h1>
    <a href="/MavenHello/employee">Zaměstnanci</a>
</body>
    <c:if test="${not empty listEmployee}">

    <ul>
        <c:forEach var="listValue" items="${listEmployee}">
            <li>${listValue}</li>
        </c:forEach>
    </ul>

</c:if>

Soy capaz de acceder al controlador, porque cada vez que me golpeó "Zaměstnanci", el System.out.println("Kontroler EmployeeController") imprime "Kontroler EmployeeController" en Tomcat Registro, pero el index.jsp página está en blanco.

Por favor, alguien puede darme un consejo?

3 Comentarios

  1. 4

    Como va a llenar ModelAndView volver ModelAndView sí mismo y no mapa.getViewName() que devolver sólo el nombre de la nombre sin datos como se indica en los documentos:

    Cadena pública getViewName() Devuelve el nombre de la vista para ser resuelto por la
    DispatcherServlet a través de un ViewResolver, o null si estamos utilizando una Vista
    objeto.

    de la siguiente manera:

    @RequestMapping(value = { "/employee" }, method = RequestMethod.GET)
    public ModelAndView listEmployee() {
        System.out.println("Kontroler EmployeeController");
        LinkedList<String> list = getList();
        ModelAndView map = new ModelAndView("index");
        map.addObject("lists", list);
    
        return map;
    }

    En segundo lugar, la falta de etiquetas jstl <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> en su página de índice y el nombre de la variable que dado que la lista es «listas» para iterar a través de «listas» en lugar de «listEmployee», de la siguiente manera:

    <html>
    <head>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Welcome to Spring Web MVC project</title>
    </head>
    
    <body>
        <h1>Index page</h1>
    </body>
    
    <c:if test="${not empty lists}">
        <c:forEach items="${lists}" var="lists">
           ${lists}
    </c:forEach>
    </c:if>

    También, asegúrese de que usted tiene JSTL de dependencia en su classpath:

    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
    • He actualizado todos los archivos como se muestra en el post anterior y ahora todo está funcionando bien. Thanku usted 🙂
  2. 2

    Acaba de agregar Model a su método de controlador de parámetros y, a continuación, agregue el atributo de este modelo.

    RequestMapping(value={"/employee"}, method = RequestMethod.GET)
    public String listEmployee(Model model){    
        System.out.println("Kontroler EmployeeController");
        LinkedList<String> list = getList();
        model.addAttribute("lists", list);
    
        return "index";
    }

    Una forma más de hacer esto, es para volver ModelAndView en lugar de String

    @RequestMapping(value={"/employee"}, method = RequestMethod.GET)
    public ModelAndView listEmployee(){    
        System.out.println("Kontroler EmployeeController");
        LinkedList<String> list = getList();
        ModelAndView map = new ModelAndView("index");
        map.addObject("lists", list);
    
        return map;
    }

    Acaba de elegir qué camino es el mejor para usted.

    Y también cambiar listEmployee en su página de índice para lists como en el ModelAndView tiene un atributo como lists no listEmployee`.

    • Así, en el primer caso estoy recibiendo el error en devolver «índice» -> String no se puede convertir en ModelAndView y en el segundo caso, estoy recibiendo el error 404 en la url /MavenHello/WEB-INF/jsp/empleado.jsp, bueno, ahora estoy más confundido que antes 😀
    • lo siento, tuve un error tipográfico. En el primer caso, usted debe tener nuestro método devuelve la Cadena. He cambiado que ya se la respuesta
  3. 0

    Cambiar el nombre de la clave y probarlo : listEmployee --> lists as you are setting it as map.addObject("lists", list);

    <ul>
        <c:forEach var="listValue" items="${lists}">
            <li>${listValue}</li>
        </c:forEach>
    </ul>

Dejar respuesta

Please enter your comment!
Please enter your name here