如何在spring注释控制器中返回多个@ModelAttribute?

Mar*_*ada 1 spring-mvc

我正在将我的控制器转换为spring mvc中带注释的样式控制器.

基本上我在旧式控制器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;
}
Run Code Online (Sandbox Code Playgroud)

在注释中,我做了这样的事情:

@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;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,有没有办法只在一个方法中返回所有属性而不必创建多个@ModelAttribute?在我的情况下,我需要注释2方法?如果我需要3,我应该创建3个带注释的方法吗?

Art*_*ald 6

规则很明确

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

@RequestMapping(method=RequestMethod.GET)
public void setUp(Model model) {
    model.addAttribute("CANNED_ITEMS", eqrManager.searchAllEqptFullQualItems("A2", "CANNED_GOODS"))
         .addAttribute("BOX_ITEMS", eqrManager.searchAllEqptCondQualItems("A1", "BOXES"));
}
Run Code Online (Sandbox Code Playgroud)

祝你好运!