简体   繁体   English

Spring boot MVC:找不到JSP

[英]Spring boot MVC: can't find JSP

Problem: I can't reach my view under WEB-INF/jsp on my Spring Boot web MVC app.问题:我无法在 Spring Boot Web MVC 应用程序的WEB-INF/jsp下访问我的视图。

What I've done:我所做的:

this is my JSP:这是我的 JSP:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <ul>
        <%--@elvariable id="users" type="java.util.List"--%>
        <c:forEach items="${utenti}" var="utente">
            <li>
                <c:out value="${utente.getUsername()}"/>
            </li>
        </c:forEach>
    </ul>
</body>
</html>

this is my Controller:这是我的控制器:

@Controller
public class UtenteController {

    @Autowired
    private UtenteService utenteService;

    @RequestMapping("/lista_utenti")
    public ModelAndView getListaUtentiView(){
        ModelMap model = new ModelMap();
        model.addAttribute("utenti", this.utenteService.getListaUtenti());
        return new ModelAndView("lista_utenti", model);
    }

}

this is my application.properties:这是我的 application.properties:

# MVC
spring.view.prefix=/WEB-INF/jsp/
spring.view.suffix=.jsp

#Postgres config
spring.datasource.driverClassName=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/DB_Test
spring.datasource.username=postgres
spring.datasource.password=postgres

and, at least, my main application:并且,至少,我的主要应用程序:

@Configuration
@EnableAutoConfiguration
@ComponentScan
public class SpringWebApplication extends SpringBootServletInitializer{

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

    @Override
    protected final SpringApplicationBuilder configure(final SpringApplicationBuilder application) {
        return application.sources(SpringWebApplication.class);
    }
}

What I'll get if I go to http://localhost:8080/lista_utenti is:如果我去http://localhost:8080/lista_utenti我会得到的是:

Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback.
Thu Jan 15 15:59:57 CET 2015
There was an unexpected error (type=Not Found, status=404).
No message available

What am I doing wrong?我究竟做错了什么?

Zio, Are you sure you've included this dependency on your pom ? Zio,你确定你已经在你的 pom 中包含了这个依赖吗?

<dependency>
   <groupId>org.apache.tomcat.embed</groupId>
   <artifactId>tomcat-embed-jasper</artifactId>
   <scope>provided</scope>
</dependency>

Without this, I'm getting your same error.没有这个,我会遇到同样的错误。

<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>required</scope>
</dependency>

Added this to my project that is in Intellj and it works..将此添加到我在 Intellj 中的项目中,并且可以正常工作。

I'am adding this in my maven dependecies and now it's working我将它添加到我的 Maven 依赖项中,现在它正在工作

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-tomcat</artifactId>
 <scope>provided</scope>
</dependency>

Add Tomcat Embed Jasper Dependency in pom.xml file在 pom.xml 文件中添加 Tomcat Embed Jasper Dependency

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <version>9.0.30</version>
</dependency>

If you've moved from using the standard thymeleaf project to Bootstrap (as I have), ensure you remove this dependency;如果您已经从使用标准 thymeleaf 项目转移到 Bootstrap(就像我一样),请确保删除此依赖项;

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM