Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GET和POST之间的Spring模型属性丢失_Java_Spring_Jsp - Fatal编程技术网

Java GET和POST之间的Spring模型属性丢失

Java 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

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,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)来避免通过隐藏控件传递属性(如果您可以使用会话的话)