Spring MVC 如何让消息正确显示?

wnrlj8wa  于 2022-11-14  发布在  Spring
关注(0)|答案(2)|浏览(151)

我找到了下面的例子来帮助自己了解SpringBoot的一部分:found here
该示例运行时没有错误,但我无法理解为什么addAttribute不显示更改后的消息,而是只返回字符串形式的“message”。

UPDATE使用**@Controller注解导致项目无法执行,作为解决方案,它需要是@RestController**。我不确定这对一般问题是否有任何意义。

这是控制器代码:

package com.example.MySecondSpringBootProject.Controller;

import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HomeController {

    @GetMapping("/")
    public String hello(){
        return "hello";
    }
    @GetMapping("/message")
    public String message(Model model) {
        model.addAttribute("message", "This is a custom message");
        return "message";
    }
}

这是消息html页面:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Spring Demo Project</title>
</head>
<body>
    <h1 th:text="${message}"></h1>
</body>
</html>

下面是本地主机上“/message”的输出:

我看过addAttribute here的各种实现,它们都使用从前端传入的值来为上述属性赋值,这对这个端点是有意义的,但在本例中,前端从方法的第二个参数中提取传入它的值-至少它应该这样做。
我试过了,没有效果:

@RequestMapping("/message")
public String message(Model model, @RequestParam(value="message") String message) {
    model.addAttribute("message", "This is a custom message");
    return "message";
}

在方法中传递第二个参数也没有任何效果,它只是返回“message”字符串:

@GetMapping("/message")
public String message(Model model, String str) {
    model.addAttribute("message", "This is a custom message");
    return "message";
}

我将继续研究它,但我的头在这一点上进入圆圈,或者我只是不太理解关于模型.addAttribute概念的东西。
提前感谢!

czfnxgou

czfnxgou1#

请尝试以下解决方案:

@GetMapping("/message")
public String message(Model model) {
    String msg = "This is a custom message" ;
    model.addAttribute("msg", msg);
    return "message";
}

对于视图:

<h2 th:text="${msg}" align="center"></h2>

我希望这对你有帮助

efzxgjgh

efzxgjgh2#

您正在返回字符串“message”,请尝试返回return model.addAtribute("message","this is custom message");

相关问题