【问题标题】:how to return two lists from controller class in spring mvc如何从spring mvc中的控制器类返回两个列表
【发布时间】:2015-06-13 04:16:34
【问题描述】:

我有两个表调用 maintab,subtab 用于生成菜单栏。

maintab has 

maitabId ,main_tab_name

subtab has:
sub_tb_ID  ,main_tb_id,subtab_name ,Url

我想得到两个列表,包含 list1=maintabid & maintabname

list2=subtabname,maintabID & url

我想使用 spring mvc 返回这两个列表。并在 jsp 页面中检索以填充菜单。请给我控制器类和 jsp 的代码:我使用休眠和平铺到此示例。

我累了

public String listmaintabAndsubtabs(Map<String, Object> map) {

        map.put("maintab", new maintab());
        map.put("maintabList", contactService.listmaintab());

        return "maintab";
    }

如何通过一种方法同时返回子选项卡和主选项卡......

【问题讨论】:

    标签: java hibernate jsp spring-mvc tiles


    【解决方案1】:

    为什么要只返回一个列表,用 map 代替。

    在你的控制器中你可以使用,

    Map mp = new HashMap();
    
    mp.put("list1", lst1);
    mp.put("list2", lst2);
    
    return mp;
    

    在你的jsp中,你可以迭代地图,

    for (Map.Entry<> entry : mp.entrySet()) {
        String listKey = entry.getKey();
        List<> childLst = entry.getValue();
    }
    

    编辑:

    一旦你有两个列表,你可以用多种方式迭代它们,

    你可以使用

    for (X obj: childLst) { // X 表示列表包含的对象的类 System.out.println(obj); }

    您也可以使用迭代器循环遍历列表。

    【讨论】:

    • 如何遍历两个子列表以比较 maintab.maintabid 和 subtab。 maintabid 感谢您的宝贵回答
    【解决方案2】:

    一种方法是使用 dto。 Dto 模式是当您的数据不适合您处理它们的方法时。 所以你可以有这样的课程

    public class MenuDto {
          private List list1;
          private List list2;          
    
          your accessor method for list1 & list2
    }
    

    然后你在控制器中的方法可以传递一个 MenuDto 的实例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-01
      • 2016-02-29
      • 2020-11-17
      • 2017-01-17
      • 1970-01-01
      • 2018-05-25
      • 2015-10-12
      相关资源
      最近更新 更多