当前位置: 首页 > 知识库问答 >
问题:

Thymleaf表单提交结果为404?

邢博涛
2023-03-14

我在Thymeleaf中编写了一个表单,从用户那里获取数据。看起来是这样的:

 	<h1>Form</h1>
    <form action="#" th:action="@{/addArticle}" th:object="${article}" method="post">
    	<p>Id: <input type="text" th:field="*{id}" /></p>
        <p>Message: <input type="text" th:field="*{title}" /></p>
        <p>Message: <input type="text" th:field="*{authors}" /></p>
        <p>Message: <input type="text" th:field="*{genre}" /></p>
        <p>Message: <input type="text" th:field="*{content}" /></p>
        <p>Message: <input type="text" th:field="*{date}" /></p>
        <p><input type="submit" value="Submit" /> <input type="reset" value="Reset" /></p>
    </form>

问题是,每当我提交此表单时,它都不会保存到mongo数据库,甚至不会显示结果页面。相反,它抛出了404。我注意到这个错误来自url:

http://localhost:8080/addArticle

这很奇怪,因为我试图重定向到我调用return.html的页面(它存在于正确的目录中,我已经测试了html是否有效)。这是我的控制器:

>@Controller
@RequestMapping("/articles")
public class ArticleController {

    private ArticleRepo articleRepo;

    @Autowired
    public ArticleController(ArticleRepo articleRepo) {
        this.articleRepo = articleRepo;
    }

    @RequestMapping(value = "/findAll", method = RequestMethod.GET)
    @ResponseBody
    public List<Article> findall() {
        return articleRepo.findAll();
    }

    @GetMapping("/addArticle")
    public String getAddArticle(Model model) {
        model.addAttribute("article", new Article());
        return "submitAnArticle";
    }

    @PostMapping("/addArticle")
    public String submitAddArticle(@ModelAttribute Article newArticle) {
        articleRepo.save(newArticle);
        return "result";
    }


}

我试着浏览堆栈溢出并参考这个Spring文档,但我被卡住了。关于这一点,我有几个问题:

最重要的问题1。有人可以使用此表单吗?或者可能可以识别此错误?

额外问题2。在我切换到Thymeleaf的奇怪表单之前,我已经在Javascript中成功使用了这个。我可以像以前一样从这里获取数据并将其放入javascript中吗?我尝试使用标准的html表单,但它什么也不做。3.有没有一种方法可以在不通过AJAX重定向页面的情况下完成此操作?

我似乎在用我的问题来解决堆积如山的问题,因为他们总是被高估,但要么回答不正确,要么根本没有答案。在此方面的任何帮助都将不胜感激。

共有3个答案

束涵涤
2023-03-14

我想你可能不会导入必要的jar,把这些放在pom.xml或自己下载

    <dependency>
        <groupId>nz.net.ultraq.thymeleaf</groupId>
        <artifactId>thymeleaf-layout-dialect</artifactId>
    </dependency>

    <dependency>
        <groupId>net.sourceforge.nekohtml</groupId>
        <artifactId>nekohtml</artifactId>
    </dependency>
公孙栋
2023-03-14

看看地图,不是你的URL吗http://localhost:8080/articles/addArticle ?, 尝试从操作中删除“/”:

th: action="@{add文章}"

否则,这可能会导致url取自根,即:

http://localhost:8080/addArticle

编辑:此外,您声明:

因为我正试图重定向到一个我称之为return.html页面

但在您的控制器中,您将返回结果,请尝试将其更改为:

@PostMapping("/addArticle")
public String submitAddArticle(@ModelAttribute Article newArticle) {
    articleRepo.save(newArticle);
    return "return";
}
乐正锦
2023-03-14

基于您的代码示例,它肯定会抛出404错误。在控制器中,您在

@RequestMapping("/articles")
public class ArticleController

@PostMapping("/addArticle")
public String submitAddArticle(@ModelAttribute Article newArticle) {

因此,您的url将是

http://localhost:8080/articles/addArticle

但你正在尝试发布

http://localhost:8080/addArticle
 类似资料:
  • 问题内容: 我的python级别是新手。我从未写过网络抓取工具或搜寻器。我已经编写了python代码以连接到api并提取所需的数据。但是对于某些提取的数据,我想获得作者的性别。我找到了该网站,但缺点是没有可用的api。我想知道如何编写python将数据提交到页面中的表单并提取返回数据。如果我能对此提供一些指导,那将是一个很大的帮助。 这是dom的形式: 结果页dom: 问题答案: 无需使用机械化,

  • 获取Form变量 通过Action的如下方法可以获取变量: GetSlice GetString GetInt GetBool GetFloat GetFile GetForm 自动映射 通常我们通过http.Request.Form来获得从用户中请求到服务器端的数据,这些数据一般都是采用name,value的形式提交的。xweb默认支持自动将这些变量映射到Action的成员中,并且这种映射支持子

  • 这是我的结果html页面: 这些结果与我的表单绑定如下: 我遇到的问题是,当返回结果页面时,无论有多少条条目,它都只显示第一条。为了显示所有结果,我需要做什么?

  • Framework7 可以通过ajax自动提交 有两种自动提交方式: 当用户提交了表单 (点击了提交按钮) 或者当通过代码触发了 "submit" 事件 当用户更改了表单的内容,或者当通过代码触发了 "change" 事件 submit时提交表单数据 只需要添加 "ajax-submit" class 在form上,当submit时就会自动通过ajax发送表单数据 <form action="se

  • 大家要切记这一点: 在任何 Single Page App中,js代码都不会产生 一个传统意义的form表单提交!(这会引起整个页面的刷新) 所以,我们往往用事件来实现.(桌面开发思维) 假设,我们在远程有个接口,可以接受别人的留言: URL: http://siwei.me/interface/blogs/add_comment 参数: content: 留言的内容. 请求方式: POST 返回

  • 用户单击提交按钮或图像按钮时,就会提交表单。使用<input>或<button>都可以定义提交按钮,只要将其type 特性的值设置为"submit"即可,而图像按钮则是通过将<input>的type 特性值设置为"image"来定义的。因此,只要我们单击以下代码生成的按钮,就可以提交表单。 <!-- 通用提交按钮 --> <input type="submit" value="Submit For