You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring中使用@GetMapping时,如何向网页传递多个对象数据?

问题分析与解决

你遇到的问题核心很明确:两次调用model.addAttribute时用了同一个key dev_apis,后添加的String数组会直接覆盖之前存入的List<DevApiDto>集合——这是Spring Model的特性,同一个key对应的值会被后续的赋值操作覆盖。

解决步骤

只需要给不同的数据分配不同的key,就能让两个数据同时存在Model中,前端页面也能分别获取到:

修改后的代码

@GetMapping("/dev_apis")
public String dev_apis(Model model){
    // 存入接口列表,使用专属key
    List<DevApiDto> devApis = devApiServiceImpl.findAllDevApis();
    model.addAttribute("devApis", devApis);
    
    // 存入状态选项数组,使用新的key
    String[] statusOptions = new String[5];
    statusOptions[0] = "default"; 
    statusOptions[1] = "pending"; 
    statusOptions[2] = "in operation";
    statusOptions[3] = "suspended"; 
    statusOptions[4] = "terminated";
    
    model.addAttribute("statusOptions", statusOptions);
    
    return "dev_apis";
}

额外优化建议

  1. 不要直接修改从devApiServiceImpl.getStatusArray()获取的数组(如果该数组是全局复用的实例,会导致其他业务场景的数据被污染),建议直接新建数组,或者用Map<Integer, String>存储状态码与文本的映射,逻辑更直观:
Map<Integer, String> statusMap = new HashMap<>();
statusMap.put(0, "default");
statusMap.put(1, "pending");
statusMap.put(2, "in operation");
statusMap.put(3, "suspended");
statusMap.put(4, "terminated");
model.addAttribute("statusMap", statusMap);
  1. 后续做多语言本地化时,建议把这些状态文本放到messages.properties(对应多语言版本如messages_zh_CN.properties)配置文件中,通过Spring的MessageSource组件动态获取,避免硬编码。

内容的提问来源于stack exchange,提问作者mycowan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 13:05:19