【问题标题】:Spring MVC Thymeleaf Error when attempting to hook a form into controller尝试将表单挂接到控制器时出现 Spring MVC Thymeleaf 错误
【发布时间】:2019-03-02 17:40:57
【问题描述】:

与 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>

【问题讨论】:

    标签: java spring spring-boot spring-mvc thymeleaf


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:
      @RequestMapping(value = "/sparql/question", method = RequestMethod.POST, params = "tb_age")public String tb_age(Model model) {
      return "sparqlanswer   tb_age";}
      
      @RequestMapping(value = "/sparql/question", method = RequestMethod.POST, params = "dc_age")
      public String dc_age(Model modeld) {
          return "sparqlanswer  dc_age";}
      
      @RequestMapping(value = "/sparql/question", method = RequestMethod.POST, params = "tb_name")public String tb_name(Model model) {
      return "sparqlanswer  tb_name";}
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多