Spring mvc 如何在带spring注释的控制器中返回多个@ModelAttribute? 我是在Spring MVC中将控制器转换成注释样式控制器的时候。

Spring mvc 如何在带spring注释的控制器中返回多个@ModelAttribute? 我是在Spring MVC中将控制器转换成注释样式控制器的时候。,spring-mvc,Spring Mvc,基本上,我是在旧式控制器simpleformcontroller中执行此操作的 protected Map referenceData(HttpServletRequest request) throws Exception { Map referenceData = new HashMap(); List<ItemVo> lstItem1 = eqrManager .searchAllEqptCondQualItems("A1", "BOXES")

基本上,我是在旧式控制器simpleformcontroller中执行此操作的

protected Map referenceData(HttpServletRequest request) throws Exception
{
    Map referenceData = new HashMap();

    List<ItemVo> lstItem1 = eqrManager
        .searchAllEqptCondQualItems("A1", "BOXES");
    List<ItemVo> lstItem2 = eqrManager
        .searchAllEqptFullQualItems("A2", "CANNED_GOODS");
    referenceData.put("BOX_ITEMS", lstItem1);
    referenceData.put("CANNED_ITEMS", lstItem2);
    return referenceData;
}
protected Map referenceData(HttpServletRequest请求)引发异常
{
Map referenceData=new HashMap();
列表lstItem1=eqrManager
.searchAllEqptCondQualItems(“A1”、“方框”);
列表lstItem2=eqrManager
.searchAllEqptFullQualItems(“A2”,“罐头食品”);
参考数据放置(“框中项目”,第1项);
参考数据放置(“罐装项目”,第2项);
返回引用数据;
}
在注释中,我做了如下操作:

@ModelAttribute("BOX_ITEMS")
public List<ItemVo> populateCondEQRItems() {
    List<ItemVo> lstCondQual = eqrManager
            .searchAllEqptCondQualItems("A1", "BOXES");
    return lstCondQual;
}

@ModelAttribute("CANNED_ITEMS")
public List<ItemVo> populateFullEQRItems() {
    List<ItemVo> lstFullQual = eqrManager
            .searchAllEqptFullQualItems("A2", "CANNED_GOODS");
    return lstFullQual;
}
@modeldattribute(“框中项目”)
公共列表PopulateItems(){
列表lstCondQual=eqrManager
.searchAllEqptCondQualItems(“A1”、“方框”);
返回lstCondQual;
}
@ModelAttribute(“罐装物品”)
公共列表populateFullEQRItems(){
列表lstFullQual=eqrManager
.searchAllEqptFullQualItems(“A2”,“罐头食品”);
返回完全相等;
}
我的问题是,有没有一种方法可以在一个方法中返回所有属性,而不是 必须创建多个@ModelAttribute?在我的例子中,我需要注释2方法?如果我需要呢
3、我是否也应该创建3个带注释的方法?

规则很明确

如果需要多个模型属性,将模型作为输入参数


祝你好运

规则很明确

如果需要多个模型属性,将模型作为输入参数

祝你好运

我看不清楚

好的!我是说@modeldattribute可以放在方法级和方法参数级。它的行为会有所不同,这取决于你把它放在哪里

    @ModelAttribute(user)
public void preRender(Model model) {
        /* this method will be invoked before resolving @ModelAttribute Method Parameter i.e. before invoking render/processCreate method */
       /* codes are available to CreateUser.jsp if render request comes */
       /* codes are available to CreateUser.jsp if validation fails */
        model.addAttribute("countryCodes", I18Nservice.getCountryISOCodes());
        model.addAttribute("languageCodes", I18Nservice.getLanguageISOCodes());
}

public String renderCreate(@ModelAttribute(value="user") User user) {
    return "/user/create";
}

@Override
public String processCreate(@ModelAttribute(value="user") User user, BindingResult result) {
           if(result.hasErrors() {
             return "/user/create";
           }
            securityService.createUser(user);
            return "/user/detail/user.getId()";
}
如果您是Spring MVC 3 arena的新手:

  • 阅读
  • 检查
  • 我看不清楚

    好的!我是说@modeldattribute可以放在方法级和方法参数级。它的行为会有所不同,这取决于你把它放在哪里

        @ModelAttribute(user)
    public void preRender(Model model) {
            /* this method will be invoked before resolving @ModelAttribute Method Parameter i.e. before invoking render/processCreate method */
           /* codes are available to CreateUser.jsp if render request comes */
           /* codes are available to CreateUser.jsp if validation fails */
            model.addAttribute("countryCodes", I18Nservice.getCountryISOCodes());
            model.addAttribute("languageCodes", I18Nservice.getLanguageISOCodes());
    }
    
    public String renderCreate(@ModelAttribute(value="user") User user) {
        return "/user/create";
    }
    
    @Override
    public String processCreate(@ModelAttribute(value="user") User user, BindingResult result) {
               if(result.hasErrors() {
                 return "/user/create";
               }
                securityService.createUser(user);
                return "/user/detail/user.getId()";
    }
    
    如果您是Spring MVC 3 arena的新手:

  • 阅读
  • 检查

  • 最后两个方法中没有modelAttribute对象。如果你用@modeldattribute注释一个方法,它将在解析@modeldattribute注释的方法参数之前被调用。您好,请原谅我根据您所说的理解,因为我不能清楚地理解它。我从某个地方的链接中读到,如果您用@modeldattribute注释一个方法,这将看起来像simpleformcontroller的referencedata工作流?我并没有真正将它用作@modeldattribute方法参数。谢谢。在最后两个方法中没有modelAttribute对象。如果你用@modeldattribute注释一个方法,它将在解析@modeldattribute注释的方法参数之前被调用。您好,请原谅我根据您所说的理解,因为我不能清楚地理解它。我从某个地方的链接中读到,如果您用@modeldattribute注释一个方法,这将看起来像simpleformcontroller的referencedata工作流?我并没有真正将它用作@modeldattribute方法参数。谢谢。嘿,它很有魅力。。我开始喜欢这种注释式的配置。。谢谢,谢谢..嘿,它很有魅力。。我开始喜欢这种注释式的配置。。谢谢,谢谢。。。非常感谢。我开始喜欢这个网站了。。希望你能一直帮助像我这样的新手。。。非常感谢。我开始喜欢这个网站了。。希望你能一直帮助像我这样的新手。。