2017-02-05 3 views
2

Ich möchte meine Werteliste in meiner JSP-Ansicht anzeigen, aber ich bin nicht in der Lage, dies zu tun.Liste der Werte auf JSP mit Spring anzeigen

Hier ist meine Controller-Klasse unten, die Liste nur zur ModelAndView Karte hinzufügen und als es auf meine index.jsp Seite umleitet.

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; 
} 

} 

index.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> 

Ich kann den Controller zugreifen zu können, weil jedes Mal, wenn ich "Zaměstnanci" getroffen, die System.out.println("Kontroler EmployeeController") druckt "Kontroler EmployeeController" in zu Tomcat Protokoll, aber die Seite index.jsp ist leer.

Bitte, kann mir jemand einen Rat geben?

Antwort

0

Wie Sie ModelAndView Rückkehr Modeland selbst bevölkern und nicht map.getViewName() die Rückkehr nur Name des Namens ohne Daten wie in docs angegeben:

public String getViewName() Gibt den Ansichtsnamen zurück, der vom DispatcherServlet aufgelöst werden soll über einen ViewResolver oder null, wenn wir ein Objekt View verwenden.

wie folgt:

@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; 
} 

Zweitens Sie vermissen jstl Tag <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> auf Ihrer Index-Seite und Variablennamen zur Liste gegeben ist „Listen“ so iterieren „Listen“ und nicht als „listEmployee“ wie folgt:

<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> 

stellen Sie außerdem sicher, dass Sie JSTL Abhängigkeit in Ihrem classpath haben:

<dependency> 
    <groupId>jstl</groupId> 
    <artifactId>jstl</artifactId> 
    <version>1.2</version> 
</dependency> 
+1

Ich habe alle Dateien aktualisiert, wie es in Ihrem Beitrag oben gezeigt wird und jetzt funktioniert alles gut. Danke :) –

1

Fügen Sie einfach Model zu Ihrer Controller-Methode params hinzu und fügen Sie dann Attribut zu diesem Modell hinzu.

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"; 
} 

Eine weitere Möglichkeit, dies zu tun, ist ModelAndView zurückzukehren statt 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; 
} 

Wählen Sie einfach die Art und Weise für Sie besser ist.

Und auch listEmployee in Ihrer Indexseite lists wie im ModelAndView ändern Sie haben ein Attribut als lists nicht listEmployee`.

+0

Nun, im ersten Fall bekomme ich einen Fehler auf retun "Index" -> String kann nicht in ModelAndView umgewandelt werden und im zweiten Fall bekomme ich Fehler 404 auf URL/MavenHello/WEB-INF/Jsp/Mitarbeiter. Jsp, nun, jetzt bin ich mehr verwirrt als zuvor: D –

+0

@StepanMocanu Entschuldigung, ich hatte einen Tippfehler. Im ersten Fall sollte unsere Methode String zurückgeben. Ich habe es schon geändert es ist die Antwort –

0

Ändern Sie den Schlüsselnamen und versuchen Sie es: 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>