- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试做简单的 Spring MVC 库
你知道为什么我的 View 有问题吗,当我在我的 Controller 中使用主页方法时,它应该显示 index.html 但我只得到Whitelabel Error Page 一直都是,我不知道为什么:/
我的结构:[ https://i.imgur.com/5TrGGrB.png]
我的 Controller :
package controller;
import model.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import service.BookService;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
@Controller
public class LiberianController{
@Autowired
private BookService bookService;
@RequestMapping(value = "/")
public String homepage() {
return "index";
}
@GetMapping(value = "/allBooks")
public ModelAndView allBooks(ModelAndView modelAndView) {
List<Book> books = bookService.getAllBooks();
modelAndView.addObject("listBooks", books);
modelAndView.setViewName("allBooks");
return modelAndView;
}
@GetMapping(value = "/addBook")
public ModelAndView newBook(ModelAndView modelAndView) {
Book book = new Book();
modelAndView.addObject("book", book);
modelAndView.setViewName("addBook");
return modelAndView;
}
@GetMapping(value = "updateBook")
public ModelAndView updateBook(HttpServletRequest httpServletRequest) {
long id = Long.parseLong(httpServletRequest.getParameter("id"));
Book book = bookService.getBook(id);
ModelAndView modelAndView = new ModelAndView("addBook");
modelAndView.addObject("book", book);
return modelAndView;
}
@RequestMapping(value = "/saveBook",method = RequestMethod.POST)
public ModelAndView saveBook(@ModelAttribute Book book) {
if (book.getId() == 0) {
bookService.addBook(book);
} else {
bookService.updateBook(book.getId(), book);
}
return new ModelAndView("redirect:/allBooks");
}
@GetMapping(value = "/deleteBook")
public ModelAndView deleteBook(HttpServletRequest httpServletRequest) {
long id = Long.parseLong(httpServletRequest.getParameter("id"));
bookService.deleteBook(id);
return new ModelAndView("redirect:/allBooks");
}
}
我的 POM:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>MyLibrary</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.12.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.thymeleaf/thymeleaf -->
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
<version>3.0.9.RELEASE</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Something</title>
</head>
<body>
<h1>Hello</h1>
</body>
</html>
应用程序属性
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3306/book?useSSL=false
spring.datasource.username=root
spring.datasource.password=root
spring.mvc.view.prefix=/WEB-INF/
spring.mvc.view.suffix=.jsp
spring.thymeleaf.mode=LEGACYHTML5
最佳答案
您的演示项目有一些问题。
您将 Runner
类放入默认包。这不是一个好主意,因为在这种情况下,Spring Boot 无法为组件扫描设置默认包。当您运行您的应用程序时,您应该看到如下内容:
** WARNING ** : Your ApplicationContext is unlikely to start due to a @ComponentScan of the default package.
解决方案:将所有类移动到通用包中。
spring-boot-starter-thymeleaf
丢失在您的 pom.xml
文件中添加以下依赖项以使 Thymeleaf 模板正常工作:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
然后删除 pom.xml
中存在的以下依赖项:
<!-- https://mvnrepository.com/artifact/org.thymeleaf/thymeleaf -->
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
<version>3.0.9.RELEASE</version>
</dependency>
spring.thymeleaf.mode=LEGACYHTML5
需要额外的依赖当您运行您的应用程序并打开 http://localhost:8080你会看到以下异常:
org.thymeleaf.exceptions.ConfigurationException: Cannot perform conversion to XML from legacy HTML: The nekoHTML library is not in classpath. nekoHTML 1.9.15 or newer is required for processing templates in "LEGACYHTML5" mode [http://nekohtml.sourceforge.net]. Maven spec: "net.sourceforge.nekohtml::nekohtml::1.9.15". IMPORTANT: DO NOT use versions of nekoHTML older than 1.9.15.
at org.thymeleaf.templateparser.html.AbstractHtmlTemplateParser.parseTemplate(AbstractHtmlTemplateParser.java:90) ~[thymeleaf-2.1.6.RELEASE.jar:2.1.6.RELEASE]
at org.thymeleaf.TemplateRepository.getTemplate(TemplateRepository.java:278) ~[thymeleaf-2.1.6.RELEASE.jar:2.1.6.RELEASE]
at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1104) ~[thymeleaf-2.1.6.RELEASE.jar:2.1.6.RELEASE]
at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1060) ~[thymeleaf-2.1.6.RELEASE.jar:2.1.6.RELEASE]
at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1011) ~[thymeleaf-2.1.6.RELEASE.jar:2.1.6.RELEASE]
这是因为您指定了:
spring.thymeleaf.mode=LEGACYHTML5
并且您还没有将 nekoHTML
库添加到类路径中。
解决方案:将以下依赖项添加到您的 pom.xml
:
<dependency>
<groupId>net.sourceforge.nekohtml</groupId>
<artifactId>nekohtml</artifactId>
<version>1.9.22</version>
</dependency>
完成所有这些步骤后,您将在应用的主页上看到“Hello”。希望对您有所帮助。
关于尝试呈现 index.html 时,Spring Boot + Thymeleaf = "Whitelabel Error Page",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48304551/
尝试运行 Spring Boot 以处理 JSP 页面时遇到一些困难。我知道文档中提供的限制,所以一切都按照规则进行。但是,找不到问题。 我会尽量提供尽可能多的信息。 想开始使用 Spring Boo
我是 Spring 新手。我目前正在遵循 T 教程并遇到“Whitelabel 错误页面”。我已经完成了研究,检查Spring boot - Whitelabel Error Page和 Spring
我正在尝试学习使用 SpringBoot 部署简单的 REST 服务。以下是我正在使用的类文件。 @SpringBootApplication public class App { publi
这是 demoApplication 类 package com.example.demo; import org.springframework.boot.SpringApplication; im
@RequestMapping(method = RequestMethod.GET, value = "/add") public ModelAndView add() throws Con
@RequestMapping(method = RequestMethod.GET, value = "/add") public ModelAndView add() throws Con
package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframew
我在使用 html 模板运行我的第一个 Java Spring 项目时遇到问题。我将模板放入 src/main/resources/templates 中。 Controller 方法调用成功。但模板
我正在尝试删除白标错误页面,所以我所做的是为“/error”创建了一个 Controller 映射, @RestController public class IndexController {
在本文中,我们将介绍著名的 Spring Boot Whitelabel 错误页面。我们将介绍如何禁用默认错误页面以及如何在您的 Spring Boot 应用程序中自定义 Whit
我使用 SpringBoot 开发了一个应用程序,该应用程序具有 Web 服务,并包括使用 ReactJs 生成和编码的前台。默认情况下,它在端口 8080 上启动。为了更容易输入 URL,我想将应用
我尝试使用模板 thymeleaf 创建页面界面,但映射时出现错误。 任何时候都可以帮助我。 附上错误截图和代码 最佳答案 如果您使用 spring mvc,当您返回字符串时,这意味着您返回为 Vie
我在运行 Spring Boot 应用程序时收到“Whitelabel 错误页面”,即使在映射 URL 后也是如此。 我已经提到了我的 application.properties 文件和一个 Con
我在运行 Spring/Hibernate 应用程序后遇到问题。错误是: Whitelabel Error Page This application has no explicit mapping
我试图运行一个简单的 Spring boot 应用程序 2 天,但仍然无法使其工作。我检查了所有相关问题和博客,但问题仍然存在。 我的项目结构如下所示。 POM.xml org.spring
我正在从链接开发代码:https://www.dineshonjava.com/microservices-with-spring-boot/并与 Finchley.SR1 合作和 spring-bo
无法使用 spring-boot 加载非常简单的 JSP 页面,出现 404 Not Found 应用程序类 @SpringBootApplication public class HmisAppli
我不是专业的 Spring Boot 开发人员。我正在教程的帮助下编写一个程序,并且正在使用 Hateoas 和 Rest,当我返回请求的响应时,我收到一个白标签错误页面。 当我尝试使用 System
我从 springinitializr 下载了一个示例演示项目 web依赖性。然后我创建了这个类。 package com.example.demo; import org.springframewo
我正在尝试将我的 spring mvc 项目转换为 spring boot。我根据spring boot转换了所有必要的文件。控制台上没有错误。但是当我在浏览器中运行我的网络应用程序时,我收到了这个错
我是一名优秀的程序员,十分优秀!