springboot 初级错误

狗操_我今年大三它妈 发布于 2017/03/10 11:40
阅读 2K+
收藏 0

一个很简单的spring boot , hello world 示例出现如下错误:
    

package lcy.project;

import java.util.Date;
import java.util.Map;

import org.springframework.beans.factory.annotation.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;


@Controller
public class WelcomeController {
	@Value("${welcome.message: Hello World}")
	private String message = "Hello World";
	
	@RequestMapping("/")
	public  String welcome(Map<String,Object> model){
		model.put("time", new Date());
		model.put("message", this.message);
		return "welcome";
	}
	
	
	@RequestMapping("/foo")
	public String foo(Map<String,Object> model){
		throw new RuntimeException("Foo");
	}
}

上面代码通过浏览器访问报如下错误:

Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Fri Mar 10 11:32:16 HKT 2017
There was an unexpected error (type=Not Found, status=404).
No message available

如果把函数改成这样,就返回正常了

@RequestMapping("/")
	public @ResponseBody String welcome(Map<String,Object> model){
		model.put("time", new Date());
		model.put("message", this.message);
		return "welcome";
	}

 

就是加了一个@ResponseBody 就正常了, https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-web-jsp 里的官方文档是没有加@ResponseBody的,请各位大牛指教,这是什么原因造成的,谢

加载中
2
阁楼望月
阁楼望月

猜测,简化Spring配置的同时肯定加了默认的视图配置,默认可能必须要转到某一个jsp页面,你直接返回String字符串就匹配不上。
加了@ResponseBody就代表返回值是json,直接输出到浏览器中,所以可以正常显示。

2
S沐大大
S沐大大

 

return "welcome";

github 上面是返回的页面,首页你得有这个页面才行,你去看看github上面是不是有个welcome 的页面

 还有

@ResponseBody

 这个注解标志的是返回Json串
这个你要弄清楚,一个是跳转页面,一个是直接返回数据

1
Im柏杨
Im柏杨

默认的Controller是到模板的,在src/java/resources/templates/ 下面的,你得有这个模板。@ResponseBody是直接返回数据页面的,你换成@RestController就不需了。

狗操_我今年大三它妈
狗操_我今年大三它妈
@Im柏杨 回复@Im柏杨 : 我用的是eclipse 的STS插件,用的是gradle做为maven的替代.
Im柏杨
Im柏杨
回复 @sunrise程序员 : 用Maven的话,都是就是这样默认的地址的,springboot配置文件里应该可以修改的,你可能需要查一下。
狗操_我今年大三它妈
狗操_我今年大三它妈
回复@Im柏杨 : src/java/resources/templates/ 这个是固定这样写的吗? 我可以改成lcy/project/resoources/teamplates 这样子吗?
狗操_我今年大三它妈
狗操_我今年大三它妈
对这样是有返回的,但是不是返回jsp网页的内容,就只是一个"welcome"字串符.
返回顶部
顶部