当前位置: 首页 > 知识库问答 >
问题:

Spring@MatrixVariable用于每个键的单个值

祁绪
2023-03-14

我正在阅读“Spring MVC,初学者指南”这本书。在一节中,它建议使用矩阵变量来传递一个高价格和低价格。在他们的示例中,声明指定了一个字符串列表作为第二个参数(见下文)。

@MatrixVariable(pathVar="price") Map<String, List<String>> priceParams

但是,由于每个键只有一个值,我想我会尝试声明:

@MatrixVariable(pathVar="price") Map<String, String> priceParams

当我尝试访问与存储在映射中的特定键相关联的“value”(使用iterator.getKey()iterator.getValue()时,我不断得到运行时的ClassCastException错误。

当我在debug中检查priceParams时,数据类型显示为LinkedMultiValueMap,目标映射显示为LinkedHashMap

我开始怀疑使用map 声明矩阵变量是不可能的,而只能使用map > 声明矩阵变量

map > 形式声明它可以工作,但您必须循环访问list中的所有条目,即使只有一个条目存在。

如有任何帮助,我将不胜感激

共有1个答案

佴阳辉
2023-03-14

来自文档

如果方法参数类型为map并且指定了矩阵变量名,则假定有适当的转换策略可用,则矩阵变量值将转换为map

如果方法参数map multivalueMap 且未指定变量名,则映射将填充所有矩阵变量名和值。

因此,您需要如下所示进行更新(即删除pathvar)

@MatrixVariable Map<String, String> priceParams

如果您仍面临任何问题,请在评论中告知

也请参阅本文了解更多信息。

 类似资料:
  • 我遇到的情况是,许多键都指向一个值。这种情况源于我正在实现的服务定位器模式- 接口中的每个方法都表示为签名字符串 因此,我需要在用户请求任何匹配键时检索单个值。 从某种意义上说,我需要一个与Guava的MultiMap相反的东西。 我正在寻找最优化的解决方案,因为我的键非常相似,尽管对于特定值是唯一的,我不确定使用像HashMap这样的通用Map实现是否足够有效来处理这种情况。 例如以下所有签名

  • 我问这个问题是关于我的问题: spring单例范围 Spring单例在参考手册中根据每个豆子的容器进行定义。 每个容器意味着如果我们喜欢: Beans.xml: 然后将出来true.Means都指向同一个实例。 对于每个豆子的短语部分,每个容器每个豆子我有点困惑。我在每个豆子的跟随是正确的: 如果我们喜欢 Beans.xml: 那么将显示为false。意味着它们是两个不同的实例?

  • 我目前正在尝试将非常混乱的xml的一部分转换为更具可读性的内容,但当我的代码没有产生我想要的内容时。 我可以获得一些关于我的代码有什么问题以及如何修复它的反馈吗? 输入示例: 我想看到的输出是: 我的代码当前如下所示: 内容没有被正确复制,我不知道为什么?

  • 我想使用Spring MVC 和Hibernate。我不想在所有控制器方法上使用服务层或属性(或者,更确切地说,我希望Spring将它们全部视为事务性)。因此,我想在控制器方法开始使用数据库时启动事务,并在控制器方法返回 ViewAndModel 或回滚事务(如果发生任何错误)时提交事务。此外,我希望视图支持延迟Hibernate加载,例如,如果html模板请求,请在自动提交模式下选择数据。 我知

  • 顺便说一句:javadoc不正确https://docs.spring.io/autorepo/docs/spring-security/4.2.x/apidocs/index.html?org/springframework/security/web/firewall/strithttpfirewall.html 自: 5.0.1 我猜是被倒车了?

  • 今天,我正在研究可从STS仪表板下载的Spring MVC展示 我对Spring 3.2版本引入的新注释@MatrixVariable以及URI路径中Matrix变量的使用有些怀疑。 在我的家中.jsp视图我有以下链接: 此处阅读有关@MatrixVariable注释的官方文档:http://static.springsource.org/spring-framework/docs/3.2.0.M