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

JSP配合Struts2开发下拉框时list键无法解析为集合异常如何解决

问题根因

你的viewService类中roleList对应的Getter方法命名不符合JavaBean规范,导致Struts2的OGNL表达式无法正确解析获取roleList集合。

你贴出的代码里,方法名写为geRoleList(),缺了get前缀的字母t,正确的命名应该是getRoleList()。Struts2解析viewService.roleList属性时,会自动按照JavaBean规范查找名为getRoleList()的公共方法,命名不匹配就无法获取到返回的List对象,因此抛出无法解析为集合/数组/映射等可迭代类型的异常。

其余下拉框正常是因为对应业务属性的Getter方法命名都符合规范,仅该方法存在拼写错误。

解决步骤

  1. 修正viewService中的方法命名:
// 修正前
public List<Role> geRoleList() {
    // 原有逻辑
}

// 修正后
public List<Role> getRoleList() {
    if (roleList == null)
        this.roleList = persistenceService.getEntities(Role.class);
    LOG.debug("getting roles, size "+roleList.size());
    return roleList;
}
  1. 重新编译部署项目即可。

如果需要快速验证问题,可以临时将JSP中s:select的list属性改为直接调用方法list="viewService.geRoleList()",确认下拉框可正常加载后再改回规范的属性写法即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:24:01