使用Spring Boot/Thymeleaf的“无消息”
我正在使用Thymeleaf的Spring Boot,并试图访问一个简单的网页。 构建项目时我没有任何错误。仅这一项访问localhost:8080/greeting
时:使用Spring Boot/Thymeleaf的“无消息”
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Fri Dec 02 15:36:04 CET 2016
There was an unexpected error (type=Not Found, status=404).
No message available
我有一个控制器:
package controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class UserController {
@RequestMapping("/greeting")
public String user(@RequestParam(value = "name", required = false, defaultValue = "World") String name, Model model){
model.addAttribute("name",name);
return "greeting";
}
}
主:
package boot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main (String[] args){
SpringApplication.run(Application.class, args);
}
}
和网页:
<!DOCTYPE html>
<html xmlns:th="http://www.themyleaf.org">
<head>
<meta charset="ISO-8859-1"/>
<title>SecondMaven</title>
</head>
<body>
<p th:text="'Hello, '+ ${name} + '!!!!!'" />
</body>
</html>
我pom.xml
:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
我对代码有什么问题没有任何线索。我认为这是一个配置问题,但到目前为止,我没有得到任何运气。 我将不胜感激任何帮助,谢谢。
让我们来看看你的主应用程序进入定睛一看:
package boot;
^^^^^^^^^^^^^
// imports
@SpringBootApplication
public class Application { ... }
的package boot
与@SpringBootApplication
沿着意味着只有在或正在boot
封装组件将被扫描并在应用程序上下文注册。这里是你的控制器看起来的样子:
package controller;
^^^^^^^^^^^^^^^^^^^
// imports
@Controller
public class UserController {
@RequestMapping("/greeting")
public String user(...) { ... }
}
因为它驻留在controller
包,它不能由@SpringBootApplication
扫描,因此它不会被注册,并不会处理请求的/greeting
端点。
最简单的解决方案是在boot
包装下移动您的控制器(以及其他要扫描的组件),例如, boot.controller
在您的具体情况。
无论如何,Spring Boot并不需要任何特定的代码布局来工作,但是,有一些最佳实践可以提供帮助。您可以结帐这些最佳做法here。
就是这样。感谢您的时间和解释! – Chuck
非常欢迎! –
试试这个:
@Controller
public class UserController {
@RequestMapping("/greeting")
public ModelAndView user(@RequestParam(value = "name", required = false, defaultValue = "World") String name) {
return new ModelAndView("greeting").addObject("name", name);
}
}
Here你有一个相当的运行实例。
谢谢,但那不是问题。我没有正确使用'@ SpringBootApplication'。 – Chuck
我似乎记得在我与Thymeleaf的有限经验中自我结束标签有问题。手动尝试关闭元素,例如
<meta charset="ISO-8859-1"></meta>
代替
<meta charset="ISO-8859-1"/>
感谢下面的帖子,问题解决了。不管怎样,谢谢你! – Chuck
你在哪里把你的'greeting.html'? –
在src/main/resources/templates中。 – Chuck