Spring - 强制 bean 属性来自 post 变量
Spring - Force a bean attribute to come from post variable
我想知道如何强制 spring 从 POST 数据(而不是 GET)填充 autowired bean。
问题是我有一个映射到 bean 的表单(即只有 setter 和 getter 的 class),由于 @RequestMapping 函数如 :
被处理
@RequestMapping("/my/custom/url")
public String myFunction(HttpSession session,
HttpServletRequest request,
@ModelAttribute @Valid MyBean bean,
Errors errors, RedirectAttributes redirectAttributes)
所以为了解释这个问题,假设我在 MyBean 中有一个变量 A。如果我通过 GET 参数发送它(/my/custom/url?A=foo),bean 填充了它不应该的值(恕我直言)。
我该如何解决?
提前致谢。
如果你想阻止GET
请求命中此方法,你需要指定你想接受哪种http方法(如果你不指定,GET
是默认的):
@RequestMapping(value = "/my/custom/url", method=RequestMethod.POST)
GETs
现在将被拒绝;只有 POSTs
会命中你的方法。
听起来您还需要使用 @RequestBody
注释:
@RequestMapping(value = "/my/custom/url", method=RequestMethod.POST)
public String myFunction(HttpSession session,
HttpServletRequest request,
@RequestBody MyBean bean,
Errors errors, RedirectAttributes redirectAttributes)
@ModelAttribute
适用于 GETs
:将 URL 字符串中的值绑定到您的 bean 中(如您所示)。
但是,对于posts,Spring需要将post的body绑定到一个bean上,略有不同: 因此 @RequestBody
注释。
您可以强制 spring 只接受 POST 方法请求,因此在您的情况下它将是:
@RequestMapping(value="/my/custom/url", method=RequestMethod.POST)
public String myFunction(HttpSession session,
HttpServletRequest request,
@ModelAttribute @Valid MyBean bean,
Errors errors, RedirectAttributes redirectAttributes)
我想知道如何强制 spring 从 POST 数据(而不是 GET)填充 autowired bean。 问题是我有一个映射到 bean 的表单(即只有 setter 和 getter 的 class),由于 @RequestMapping 函数如 :
被处理@RequestMapping("/my/custom/url")
public String myFunction(HttpSession session,
HttpServletRequest request,
@ModelAttribute @Valid MyBean bean,
Errors errors, RedirectAttributes redirectAttributes)
所以为了解释这个问题,假设我在 MyBean 中有一个变量 A。如果我通过 GET 参数发送它(/my/custom/url?A=foo),bean 填充了它不应该的值(恕我直言)。
我该如何解决?
提前致谢。
如果你想阻止GET
请求命中此方法,你需要指定你想接受哪种http方法(如果你不指定,GET
是默认的):
@RequestMapping(value = "/my/custom/url", method=RequestMethod.POST)
GETs
现在将被拒绝;只有 POSTs
会命中你的方法。
听起来您还需要使用 @RequestBody
注释:
@RequestMapping(value = "/my/custom/url", method=RequestMethod.POST)
public String myFunction(HttpSession session,
HttpServletRequest request,
@RequestBody MyBean bean,
Errors errors, RedirectAttributes redirectAttributes)
@ModelAttribute
适用于 GETs
:将 URL 字符串中的值绑定到您的 bean 中(如您所示)。
但是,对于posts,Spring需要将post的body绑定到一个bean上,略有不同: 因此 @RequestBody
注释。
您可以强制 spring 只接受 POST 方法请求,因此在您的情况下它将是:
@RequestMapping(value="/my/custom/url", method=RequestMethod.POST)
public String myFunction(HttpSession session,
HttpServletRequest request,
@ModelAttribute @Valid MyBean bean,
Errors errors, RedirectAttributes redirectAttributes)