首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何绑定Maps of Maps,或者其他一些结构化数据的方法

如何绑定Maps of Maps,或者其他一些结构化数据的方法
EN

Stack Overflow用户
提问于 2013-06-13 03:02:21
回答 1查看 562关注 0票数 1

我甚至不确定如何去问这个问题,但我会试着去尝试一下。

我有一个我支持的现有应用程序,它由一堆值组成的动态生成的形式组成。表单被分解成一个由行和列组成的矩阵,JSP使用此信息构造所需的表单:inputs。为了构建表单,我有一些类似的Java类(主要是伪代码,以便您了解我在做什么):

代码语言:javascript
运行
复制
class Form {
  List<FormParts> parts;
}

class FormParts {
  List<FormRow> rows;
  List<FormHeader> headers;
}

class FormRow {
  String name;
}

class FormHeader {
  String name;
}

我使用这些类在FormParts中动态构建表单,方法是循环遍历表单,然后使用FormRows和FormHeaders构建form:inputs表,使用计数器对FormResponse中描述的结果答案列表进行索引:

代码语言:javascript
运行
复制
class FormResponse {
  List<FormAnswer> answers;
}

class FormAnswer {
  int rowNumber;
  int headerNumber;
  String value;
}

我遇到的问题是List<FormAnswer> answers。因为它是一个列表,所以我必须存储所有答案,甚至是空答案(Null),以便能够从DB重新加载FormResponses。这会在我的表中创建大量的垃圾行,并使应用程序变慢。然而,当我在大约4个月前第一次写这篇文章时,我记得我曾挣扎过一段时间,试图弄清楚如何让Spring MVC绑定到Map of Maps,这将是一种更好的实现方式,因为我可以简单地跳过不需要的答案。我记得当时的问题是,在Spring MVC内部,这些列表和Map变成了LazyList和LazyMap。

有没有人有其他可能的解决方案?

EN

回答 1

Stack Overflow用户

发布于 2013-06-13 05:56:24

Auto populating Set上查看我关于动态表单和Spring的回答。

关键是使用Map<Integer, YourObject>而不是列表。有了这些,你就可以在你的索引中留下空位了。

使用Map of Maps是不可能的,因为泛型将被删除。映射始终需要是object的属性。所以你的例子应该没问题。

LazyList / LazyMap的概念早就消亡了。Spring能够操纵any list and map type。如果Map属性为null,则LinkedHashMap的实例为created by default

另一种可能是手动进行绑定和验证,然后通过网络发送JSON (即在<input type="hidden">中以JSON的形式提交表单,或者直接通过AJAX提交表单)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17073282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档