gpt4 book ai didi

spring-boot - 未调用@GetMapping 方法

转载 作者:行者123 更新时间:2023-12-05 05:57:02 28 4
gpt4 key购买 nike

我是初学者,请不要刻薄。我有一个 html 页面 index.html我想调用 MainController::getListEmployee 方法。在这个方法中,我放了一个System.err,看看是否调用了这个方法。我什么也没看到。

Controller 代码

package com.cgi.listeemployes.controller;

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.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.cgi.listeemployes.model.User;
import com.cgi.listeemployes.repository.UserRepository;

@Controller // This means that this class is a Controller
@RequestMapping(path="/") // This means URL's start with /demo (after Application path)
public class MainController {
@Autowired // This means to get the bean called userRepository
// Which is auto-generated by Spring, we will use it to handle the data
private UserRepository userRepository;

@GetMapping(path="/index.html")
public @ResponseBody Iterable<User> getListEmployee() {
// This returns a JSON or XML with the users
System.err.println("getting ");
return userRepository.findAll();
}

@PostMapping(path="/add") // Map ONLY POST Requests
public @ResponseBody String addNewUser (@RequestParam String name
, @RequestParam String email) {
// @ResponseBody means the returned String is the response, not a view name
// @RequestParam means it is a parameter from the GET or POST request

User n = new User();
n.setName(name);
n.setEmail(email);
userRepository.save(n);
return "Saved";
}

@GetMapping(path="/all")
public @ResponseBody Iterable<User> getAllUsers() {
// This returns a JSON or XML with the users
return userRepository.findAll();
}
}

谢谢你的帮助

enter image description here

最佳答案

当你想返回一个 html 时,只需返回一个带有 html 文件名称的字符串,它可以是“Index”(没有 .html)。

在您的@GetMapping(path="/index.html") 中,您将返回一个对象而不是 html。

如果你想从数据库加载数据并在你的 html 中呈现它,然后在你的参数中添加属性“模型模型”,如下所示:

@GetMapping(path="/index.html")
public String getListEmployee(Model model) {
List<User> users = userRepository.findAll();
model.addAttribute("yourUsers", users); // this gonna inject the list of users in your html
System.err.println("getting ");
return "Index"
}

然后在您的 html 中,您可以使用 ${yourUsers} 获取用户并做任何您想做的事情。

我看到了你的项目,它缺少模板引擎。模板引擎将获取后端数据并显示在前端/html 中。我将 Thymeleaf 模板引擎添加到您的 pom.xml 中,它起作用了。这是 thymeleaf 依赖项:

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

要使用 thymeleaf,您必须将所有 html 放入“资源”中名为"template"的新文件夹中,与“静态”级别相同。你不能在静态文件夹中使用 html,这个文件夹应该只有 css、javascripts 和 Assets 。

关于spring-boot - 未调用@GetMapping 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68942430/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com