我有一个这样的表格:
<form action="/list/${tableName}" method="post">
<p>
<select name="tableName">
<option value="employees">Employees</option>
<option value="contracts">Contracts</option>
</select>
</p>
<input type="submit" value="Submit" />
</form>
在控制器方面:
@RequestMapping(value = "/list/{tableName}", method = { RequestMethod.POST, RequestMethod.GET })
public String getTables(Model m, @PathVariable("tableName") String tableName) {
...
//findAll here
...
return "home";
}
它写了“未找到”P.S。:现在@PathVariable曾经是@RequestParam,因为我也在体内使用它。如何将选项作为变量传递给控制器,以便在使用findAll列出表数据时获取列表/员工和列表/合同?
@RequestParam
用于查询参数(静态值),如:http://localhost:8080/calculation/pow?base=2&ext=4
@PathVariable
用于动态值,如:http://localhost:8080/calculation/sqrt/8
@RequestMapping(value="/pow", method=RequestMethod.GET)
public int pow(@RequestParam(value="base") int base1, @RequestParam(value="ext") int ext1){
int pow = (int) Math.pow(base1, ext1);
return pow;
}
@RequestMapping("/sqrt/{num}")
public double sqrt(@PathVariable(value="num") int num1){
double sqrtnum=Math.sqrt(num1);
return sqrtnum;
}
这里是关于那个@PathVariable vs @RequestParam的更多信息的链接
解决您的问题您需要查看(如在调试模式下)您的方法findAll
实际上是否返回了一些数据以及您如何将此数据发送到视图。
只需使用@RequestParam注释即可。
如文档中所述:
您可以使用@RequestParam批注将Servlet请求参数(即查询参数或表单数据)绑定到控制器中的方法参数。 https://docs.spring.io/spring/docs/5.2.0.M1/spring-framework-reference/web.html#mvc-ann-requestparam
表格:
<form action="/list">
<select name="tableName">
<option value="employees">Employees</option>
<option value="contracts">Contracts</option>
</select>
<input type="submit" value="Submit" />
</form>
控制器:
@RequestMapping(value = "/list", method = RequestMethod.GET)
public String getTables(Model m, @RequestParam("tableName") String tableName) {
//findAll here
return "home";
}
如果您的请求在服务器上没有任何副作用(是只读请求),那么好的方法是使用GET方法。