Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.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 为什么Google Protocol buffers消息不能在Spring MVC控制器中自动绑定?_Java_Spring Mvc_Protocol Buffers - Fatal编程技术网

Java 为什么Google Protocol buffers消息不能在Spring MVC控制器中自动绑定?

Java 为什么Google Protocol buffers消息不能在Spring MVC控制器中自动绑定?,java,spring-mvc,protocol-buffers,Java,Spring Mvc,Protocol Buffers,我有一个标准的表单控制器来更新被持久化的google protocol buffers消息对象。对于表单,我将Message.Builder添加到ModelMap中,以便访问setter消息。但是,我在表单中更改的值不会自动绑定到生成器对象。我不明白为什么那不起作用。。。我确实在@SessionAttributes上看到了这个消息。下面是我的实现的摘要版本 @RequestMapping(method = RequestMethod.GET) public String setup(ModelM

我有一个标准的表单控制器来更新被持久化的google protocol buffers消息对象。对于表单,我将Message.Builder添加到ModelMap中,以便访问setter消息。但是,我在表单中更改的值不会自动绑定到生成器对象。我不明白为什么那不起作用。。。我确实在@SessionAttributes上看到了这个消息。下面是我的实现的摘要版本

@RequestMapping(method = RequestMethod.GET)
public String setup(ModelMap modelMap) {
   Message.Builder builder = Message.Builder.newBuilder(serviceLayer.getMessage(someId));
   modelMap.addAttribute("message", builder);
   return "form";
}

@RequestMapping(method = RequestMethod.POST)
public String process(@ModelAttribute("message") Message message) {
   serviceLayer.saveMessage(message.build());
   return "done";
}

事实证明,嵌入getter方法的消息只返回一个不可变的对象,即使是从生成器返回。相反,我必须使用HttpServletRequest自下而上地重构消息

您能给我们看一下
@SessionAttributes
吗?@SessionAttributes(“消息”)。我可以在setup方法中设置一个值,并在process方法的调试程序中查看它。因此,我知道消息正确地通过会话传递。在我的表单中,我也使用了spring表单taglib。