首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >方法签名中带有@ModelAttribute的@ModelAttribute批注方法

方法签名中带有@ModelAttribute的@ModelAttribute批注方法
EN

Stack Overflow用户
提问于 2011-03-29 04:04:33
回答 2查看 1.2K关注 0票数 4

我想知道是否有可能通过在方法签名中使用另一个ModelAttribute注释@ModelAttribute方法来链接@ModelAttribute方法。这将在一个控制器中。

代码语言:javascript
复制
@ModelAttribute("attrOne")
public AttrOne getAttrOne() {
    return service.getAttOne();
}

@ModelAttribute("attrTwo")
public AttrTwo getAttrTwo(@ModelAttribute("attrOne") AttrOne attrOne){
    return anotherservice.getAttrTwo(attrOne);      
}

然后,如果有一个请求映射方法可以做到这一点:

代码语言:javascript
复制
@RequestMapping(method=RequestMethod.GET)
public String doSomething(@ModelAttribute("attrTwo") AttrTwo attrTwo )

这样行得通吗?

在第二个带注释的方法中,我似乎为AttrOne获得了一个空对象...因为第一个带注释的方法不会被第二个方法调用...

干杯

EN

回答 2

Stack Overflow用户

发布于 2012-12-27 20:11:45

通过从spring文档中学习,我遇到了同样的情况:

@ModelAttribute也用于方法级别...对于这种用法,方法签名可以包含与上面为@RequestMapping注释记录的类型相同的类型。

我找到了面临这个问题的SPR-6299。在注释中,您可以找到一种变通方法,只为提供一个 @ModelAttribute注释方法,该方法将属性设置到模型中:

代码语言:javascript
复制
@ModelAttribute
public void populateModel(Model model) { 
  model.addAttribute("attrOne", getAttrOne());
  model.addAttribute("attrTwo", getAttrTwo());
}
票数 4
EN

Stack Overflow用户

发布于 2014-09-09 23:40:18

根据SPR-6299的说法,这将在Spring4.1 RC1或更高版本中成为可能。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5464456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档