我有这样的表格:
<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列出表数据时获得列表/员工和列表/合同?
答案 0 :(得分:1)
@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
是否实际上正在返回一些数据以及如何将这些数据发送到视图。
答案 1 :(得分:1)
只需使用 @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方法。