首页 > 解决方案 > 尝试将表单连接到控制器时出现 Spring MVC Thymeleaf 错误

问题描述

与 Spring / Thymeleaf 进行一场精彩的战斗,决定尝试将控制台应用程序转变为 Web 应用程序。

我有一个带有 3 个不同按钮的表单,每个按钮都将在控制器中使用不同的方法。然后我打算让这些方法各自做自己的事情并根据需要返回结果,但目前在参数方面出现错误。

在网上看,似乎我正在遵循一个给出的例子,但没有任何乐趣,非常感谢任何帮助。

例外:

    This application has no explicit mapping for /error, so you are seeing this as a fallback.

Sat Mar 02 17:08:48 GMT 2019
There was an unexpected error (type=Bad Request, status=400).
Parameter conditions "action=tb_name" not met for actual request parameters: tb_name={tb_name}

控制器:

 @RequestMapping(value="/sparql", method=RequestMethod.POST, params="action=tb_age")
    public String tb_age(Model model){
        String queryString = "tb_age query";
        String queryResult = "tb_age result";

        model.addAttribute("sparqlQuery", queryString);
        model.addAttribute("sparqlAnswer", queryResult);
        model.addAttribute("now", dateTime);

        return "sparqlanswer";
    }

    @RequestMapping(value="/sparql", method=RequestMethod.POST, params="action=dc_age")
    public String dc_age(Model model){
        String queryString = "dc_age query";
        String queryResult = "dc_age result";

        model.addAttribute("sparqlQuery", queryString);
        model.addAttribute("sparqlAnswer", queryResult);
        model.addAttribute("now", dateTime);
        return "sparqlanswer";
    }

表单html页面:

   <p>
        <form action="#" data-th-action="@{/sparql/question}" data-th-object="${model}" method="post">
            <p>How old is tb</p><button type="submit" name="action" value="tb_age">Ask?</button>
            <p>How old is dc</p><button type="submit" name="action" value="dc_age">Ask?</button>
            <p>What is the birth name of tb?</p><button type="submit" name="tb_name" value="tb_name">Ask?</button>
        </form>
    </p>

我转发到的结果 html 页面:

  <p>Results:</p>
    <p>Question asked: </p>
    <p>Sparql Query: <strong th:text="${sparqlQuery}"></strong></p>
    <p>Answer: <strong th:text="${sparqlAnswer}"></strong></p>

标签: javaspringspring-bootspring-mvcthymeleaf

解决方案


您错误地使用了参数值。Params 是参数名称的列表,而不是名称 = 值的列表。还有一个 formaction 属性,您可以将其添加到您的按钮以发布到特定的 url。


推荐阅读