【问题标题】:Thymeleaf Form - Text Only, No FormThymeleaf 形式 - 仅文本,无形式
【发布时间】:2021-01-04 23:57:45
【问题描述】:

我已经搞砸了一个多小时,我知道我只是在看一些东西,所以有人可以向我指出吗?

我是 Spring 新手,我正在尝试使用 Thymeleaf 表单来处理我的 Spring 项目。

我的控制器:

public class ExampleController
{
    
    @GetMapping("/sendForm")
    public String sendForm(Model model) 
    {
        User user = new User();
        model.addAttribute("user", user);
        return "addUser";
    }

    @PostMapping("/processForm")
    public String processForm(User user) {

        return "showMessage";
    }

我的用户:

    private String name;
    private String occupation;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getOccupation() {
        return occupation;
    }

    public void setOccupation(String occupation) {
        this.occupation = occupation;
    }

还有我的 HTML:

<form action="#" th:action="@{/processForm}" th:object="${user}" method="post">
    <input type="text" th:field="*{name}" />
    <input type="submit" />
</form>

我的页面上显示的只是纯文本中的“addUser”。

编辑: https://github.com/agrapes22/employeeTrackerApp 已将完整代码添加到 GitHub。

提前致谢。

【问题讨论】:

  • 您的ExampleController 是否用@Controller@RestController 注释?
  • 我认为是@RestController,但我两种方式都试过了
  • 应该是@Controller。只有在使用它时,Spring 才会将返回的 String 解释为视图。对于@RestController,返回字符串被视为响应正文。你在使用 Spring Boot 吗?在start.spring.io 上开始您的项目要容易得多(确保包含 WebThymeleaf 依赖项)。
  • 我正在使用 Eclipse 插件进行 spring boot 和 maven。我的 pom.xml 文件中有 thymeleaf 和 web 依赖项。我用@Controller 试过了,但我仍然只有一个文本字符串
  • 你能把你的代码放在 github 存储库上吗?您在此处发布的代码显然没有任何问题。

标签: spring forms thymeleaf


【解决方案1】:

如果您查看以下示例,了解如何从本教程中创建 表单

本指南将引导您完成使用 Spring 创建和 提交网络表单。

https://spring.io/guides/gs/handling-form-submission/

package com.example.handlingformsubmission;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;

@Controller
public class GreetingController {

  @GetMapping("/greeting")
  public String greetingForm(Model model) {
    model.addAttribute("greeting", new Greeting());
    return "greeting";
  }

  @PostMapping("/greeting")
  public String greetingSubmit(@ModelAttribute Greeting greeting, Model model) {
    model.addAttribute("greeting", greeting);
    return "result";
  }

}

在 Spring 构建网站的方法中,处理 HTTP 请求 由控制器。这些组件很容易被识别 @Controller 注解。下面的 GreetingController 清单通过返回一个名称来处理 /greeting 的 GET 请求 查看(在本例中为问候语)。

在我看来,由于您缺少 @Controller 注释,您的方法将返回字符串“addUser”,而不是将其与名为“addUser”的视图匹配并返回实际视图。

【讨论】:

  • 抱歉,我的控制器注释被切断了。那是我开始使用的教程,但无法开始工作。
  • 您的视图名称是什么?
猜你喜欢
  • 2020-08-26
  • 1970-01-01
  • 2015-08-17
  • 1970-01-01
  • 1970-01-01
  • 2018-06-04
  • 1970-01-01
  • 1970-01-01
  • 2011-07-05
相关资源
最近更新 更多