Java GET和POST之间的Spring模型属性丢失
get方法将准备模型并发送到“addperson”jspJava GET和POST之间的Spring模型属性丢失,java,spring,jsp,Java,Spring,Jsp,get方法将准备模型并发送到“addperson”jsp 它还将“mode”属性设置为“add”(这样add和edit可以共享同一个jsp) 当processSubmit结果有错误时,模式属性消失 如何在调用之间维护mode属性 @RequestMapping(value="/people/def/add" , method = RequestMethod.GET) public String personAdd(@ModelAttribute("person") Person person,M
它还将“mode”属性设置为“add”(这样add和edit可以共享同一个jsp)
当processSubmit结果有错误时,模式属性消失
如何在调用之间维护mode属性
@RequestMapping(value="/people/def/add" , method = RequestMethod.GET)
public String personAdd(@ModelAttribute("person") Person person,Model map) {
map.addAttribute("mode", "add");
//DO SOME LOGIC
return "personAdd";
}
@RequestMapping(value="/people/def/add" , method = RequestMethod.POST)
public String processSubmit(@ModelAttribute("person") Person person,BindingResult result) {
personValidator.validate(person, result);
if (result.hasErrors()) {
//MODE ATTRIBUTE IS LOST
return "personAdd";
请求属性仅在请求的生命周期内有效。因此,如果您想在Post中恢复“模式”,您可能需要将其作为Post的一部分提交回来,可能需要在web表单中使用隐藏表单控件
您必须将“@RequestParam(“mode”)String mode”添加到“processSubmit”方法中,才能从HTTP POST参数中检索mode的值请求属性仅在请求生命周期内有效。所以,如果你想在Post中恢复“模式”,你可能必须将其作为Post的一部分提交回去,可能是通过在你的web表单中使用隐藏表单控件来实现的。如何将非bean属性添加为隐藏?喜欢吗?是的。我认为您必须将“@RequestParam(“mode”)String mode”添加到“processSubmit”方法中,才能从HTTP POST参数中检索mode的值非常感谢!,你能把你的答案贴出来让我接受吗?欢迎!发布了答案。请注意,只要它适合您,您可以通过将属性设置为会话属性(使用@SessionAttributes list)来避免通过隐藏控件传递属性(如果您可以使用会话的话)