Springboot控制器问题

时间:2019-07-25 04:02:56

标签: java spring spring-boot

Spring初始化程序中的Web Starter项目问题​​。 Springboot 2.2.0

我刚刚从Spring初始化程序网站创建了一个spring boot 2.2.0项目,该项目具有Web Starter依赖性。如果我使用@RestController批注并从邮递员发送请求,则该应用程序运行良好,但是当我使用@Controller批注并尝试加载/ resources / templates目录中的hello.html页面时,它将抛出空或白标签错误。奇怪的是,包装结构完美,但无法正常工作。

到目前为止,对于此问题,我找不到任何答案。

4 个答案:

答案 0 :(得分:1)

可能的问题:

使用@ResponseBody时添加@ResponseBody 使用@Controller时需要@RestController@Controller@ResponseBody的特殊版本,其中@Controller public class UserController { @GetMapping(value= "/hello") public @ResponseBody String sayHello() { retrun "Hello"; } } 默认处于活动状态

@Controller vs @RestController


@Controller

@RestController
public class UserController {

    @GetMapping(value= "/hello")
    public String sayHello()
    {   
        retrun "Hello";
    }
}

@RestContoller

import FullCalendar from "@fullcalendar/react";
import timeGrid from "@fullcalendar/resource-timegrid";
import resourceDayGridPlugin from '@fullcalendar/resource-daygrid';

class FC extends React.Component {
  calendarComponentRef = React.createRef();

  constructor(props) {
    super(props);    
    this.state = {
        events:[{ "id": 1, "title": "event 1", "description":"some description"},......]
    }  
  }

  eventRender(info){
    var tooltip = new Tooltip(info.el, {
      title: info.event.extendedProps.description,
      placement: 'top',
      trigger: 'hover',
      container: 'body'
    });
  }

  render() {
    return <FullCalendar                  
          events={this.state.getEvents}          
          defaultView="resourceTimeGridDay"
      plugins={[timeGrid, interactionPlugin, resourceDayGridPlugin]}
          eventRender={this.eventRender}
          schedulerLicenseKey="GPL-My-Project-Is-Open-Source"
        />

  }
}

答案 1 :(得分:0)

@RestController:如果它是@RestController,则仅返回我们在return语句中给出的值。 例如:

HomeController.java

package com.example.demo;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HomeController {

@RequestMapping(value="/")
public String index() {
   return "home";
}
}

输出为:home

它只返回return语句

@Controller:@Controller批注返回视图页面(resource / template / home.html)。例如:

HomeController.java

 package com.example.demo;

 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.stereotype.Controller;

 @Controller
 public class HomeController {

 @RequestMapping(value="/")
 public String index() {
    return "home";
 }
 }

home.html

<!DOCTYPE html>
<html>
 <head>
   <meta charset="UTF-8">
   <title>Insert title here</title>
 </head>
 <body>
   <img alt="Image" src="/images/barbie.jpg">
 </body>
</html>

输出:显示home.html页面

enter image description here

答案 2 :(得分:0)

是否将百里香依赖性添加到您的项目中?

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

答案 3 :(得分:0)

只需更新Maven依赖项即可解决此问题。谢谢大家的回应。