Spring MVC 转发附加请求参数值 当我们对 topRequest 和转发请求具有相同的参数名称时,逗号
@RequestMapping(path = "/details")
public ModelAndView details(@ModelAttribute final DetailsForm detailsForm){
//DetailsForm contain a parameter called destinationId with value 1234
final ModelAndView mav = new ModelAndView();
//Some logic to get targeted destinationId (7890) using destinationId (1234) from detailForm
mav.setViewName("forward:/search?destinationId=7890");
return mav;
}
@RequestMapping(path = "/search")
public ModelAndView details(@ModelAttribute final SearchForm searchForm){
//Here I tried to get destinationId from model-attribute searchForm
final Integer destinationId = searchForm.getDestinationId();
//Then it returned me 1234,7890
}
有人可以帮我解决这个问题吗?我只想得到 7890。
我也对答案感兴趣。我也遇到了这个问题,通过添加一个方法来破解它:
private String getLastPartFromFormValue(final String value) {
if (value == null)
return null;
String[] parts = value.split(",");
return parts[parts.length -1];
}
只是为了知识。
如果你有一个方法,并且你有一个名为 thing 的查询参数,并且有一个用 @ModelAttribute
批注的对象,并且在该对象中你有一个与查询参数同名的字段,则可以预期这种行为。
例如:
@PostMapping(value = "/my-awesome-path")
public String myAwesomeMethod(
@RequestParam(name = "token", required = false) final String token,
@ModelAttribute("formData") final MyFormData formData) {
//class fields and members...
而且,在MyFormData中,您有以下内容:
public class MyFormData{
private String token;
//other fields, getters and setters...
您将收到查询参数token
,其中的值重复且逗号分隔,以及MyFormData
对象。
另一种方法是检查随机性并更改参数名称或重新设计(如有必要(。
在示例中,查询参数名称更改如下:
@PostMapping(value = "/my-awesome-path")
public String myAwesomeMethod(
@RequestParam(name = "custom-token", required = false) final String customToken,
@ModelAttribute("formData") final MyFormData formData) {
//class fields and members...
并且这些值不会重复或逗号分隔。
干杯。