2017-07-22 2 views
1

Ich schreibe eine Spring MVC-Anwendung mit Spring Boot. Ich versuche, einen Text und eine Liste von Department-Objekten anzuzeigen, die aus der Controller-Klasse stammen. Wenn die Boot-Anwendung ausgeführt wird, werden die Werte in der Variablen Variablen des Controllers aufgefüllt und die Seite wird an die angegebene JSP umgeleitet.Spring Boot - JSP wird nicht gerendert

Das Problem ist die Ausgabe ist in etwa so. Screenshot of the output

Ich möchte, dass die Werte in der angegebenen EL aufgefüllt werden. Jede Hilfe wird sehr geschätzt.

Im Folgenden werden die Codes verwendet.

Department.jsp

<!DOCTYPE html> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<html lang="en"> 
<head> 
</head> 
<body> 
    <div> 
     <div> 
      <h1>${message}</h1> 
       <ul> 
       <c:forEach var="listValue" items="${DepartmentList}" > 
         <li>${listValue.deptName}</li> 
       </c:forEach> 
       </ul> 
     </div> 
    </div> 
</body> 
</html> 

SpringMVCApplication.java

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
import org.springframework.boot.builder.SpringApplicationBuilder; 
import org.springframework.boot.web.support.SpringBootServletInitializer; 

@SpringBootApplication 
public class SpringMVCApplication extends SpringBootServletInitializer{ 

    @Override 
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { 
     return builder.sources(SpringMVCApplication.class); 
    } 

    public static void main(String[] args) { 
     SpringApplication.run(SpringMVCApplication.class, args); 
    } 

} 

MVCConfiguration.java

import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; 
import org.springframework.web.servlet.config.annotation.EnableWebMvc; 
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry; 
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 
import org.springframework.web.servlet.view.InternalResourceViewResolver; 


@Configuration 
@EnableWebMvc 
@ComponentScan(value = "com.practices.spring.mvc") 
public class MVCConfiguration extends WebMvcConfigurerAdapter { 

    @Override 
    public void configureViewResolvers(ViewResolverRegistry registry) { 
     InternalResourceViewResolver resolver = new InternalResourceViewResolver(); 
     resolver.setPrefix("/WEB-INF/view/"); 
     resolver.setSuffix(".jsp"); 
     resolver.setContentType("application/html"); 

     registry.viewResolver(resolver); 
    } 

    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { 
     configurer.enable(); 
    } 


} 

DepartmentController.java

import java.util.ArrayList; 
import java.util.List; 

import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.servlet.ModelAndView; 

import com.practices.spring.mvc.valueobject.Department; 

@Controller 
public class DepartmentController { 


    @RequestMapping(method = RequestMethod.GET, value = "/depts") 
    public ModelAndView getAllDepartments(){ 
     ModelAndView mv = new ModelAndView("Department"); 
     List<Department> deptList = populateDepartment(); 

     mv.addObject("DepartmentList", deptList); 
     mv.addObject("message", "Hi"); 


     return mv; 
    } 




    private List<Department> populateDepartment(){ 
     List<Department> deptListTemp = new ArrayList<>(); 
     Department dept1 = new Department("1", "Finance"); 
     Department dept2 = new Department("2", "CRO"); 
     deptListTemp.add(dept1); 
     deptListTemp.add(dept2); 

     return deptListTemp; 

    } 

} 

Department.java

package com.practices.spring.mvc.valueobject; 

public class Department { 
    private String deptId; 
    private String deptName; 

    public Department(){} 

    public Department (String deptIdentification, String deptartmentName){ 
     deptId = deptIdentification; 
     deptName = deptartmentName; 
    } 

    public String getDeptId() { 
     return deptId; 
    } 
    public void setDeptId(String deptId) { 
     this.deptId = deptId; 
    } 
    public String getDeptName() { 
     return deptName; 
    } 
    public void setDeptName(String deptName) { 
     this.deptName = deptName; 
    } 


    public String toString(){ 
     return "[deptId : "+deptId +" ! deptName : "+deptName+"]"; 
    } 


} 

Antwort

0

Können Sie unter Abhängigkeiten in pom.xml versuchen Sie?

<dependency> 
    <groupId>org.apache.tomcat.embed</groupId> 
    <artifactId>tomcat-embed-jasper</artifactId> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>jstl</artifactId> 
    <scope>provided</scope> 
</dependency> 
+1

Nach dem Hinzufügen der Maven-Einträge funktionierte es gut. Danke vielmals –

1

Haben Sie JSP und JSTL Gläser auf Ihr Projekt?

Wenn Sie Maven hinzufügen

<dependency> 
    <groupId>javax.servlet.jsp</groupId> 
    <artifactId>javax.servlet.jsp-api</artifactId> 
    <version>2.3.1</version> 
    <scope>provided</scope> 
</dependency> 

<dependency> 
    <groupId>javax.servlet.jsp.jstl</groupId> 
    <artifactId>javax.servlet.jsp.jstl-api</artifactId> 
    <version>1.2.1</version> 
</dependency>