java - 尝试将表单连接到控制器时出现 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>
解决方案
您错误地使用了参数值。Params 是参数名称的列表,而不是名称 = 值的列表。还有一个 formaction 属性,您可以将其添加到您的按钮以发布到特定的 url。
推荐阅读
- arrays - 在 Julia 中将 CartesianIndex 数组转换为二维矩阵
- javascript - 如何使用 ng2-izitoast 将自定义 CSS 应用于 Toast?
- java - 泛型映射键应该只允许两个类并且值一个类
- facebook - 等待 Facebook 审核我的应用登录权限 10 周。有什么我可以做的吗?
- adsense-api - 我如何通过 AdSense Api 获得每月和每个网站的付款
- android - 由于 SSL 错误处理程序代码,Google Play 商店拒绝了应用程序
- java - 在 C++ 客户端中读取 Java DataOutputStream
- ldap - /users/{userId} 仅适用于当前用户?
- validation - 如何在仪表 bdd 中使用“file:”参数
- php - SonataAdmin $showMapper