【问题标题】:Grails params map as java.util.HashMapGrails 参数映射为 java.util.HashMap
【发布时间】:2012-10-19 12:32:11
【问题描述】:

在我的 grails 项目中,我可以使用参数映射(GrailsParameterMap 的对象)作为 java.util.HashMap 在应用层面?

我想这样做是为了使用 java.util.HashMap 的 Serializability。 我可以在代码中的任何地方使用params as java.util.HashMap。但是我怎样才能在应用程序级别实现这一点?

我正在使用 grails 1.3.7

提前致谢。

【问题讨论】:

  • 您能否更具体地说明您要完成的工作?举个例子什么的?
  • 实际上,我确实将此参数映射保存在 http 会话中,并且我还在应用程序服务器之间使用会话复制。所以我在类 GrailsParameterMap 上得到 NotSerializableException。这就是为什么我想使用参数作为 java.util.HashMap 是可序列化的,而 GrailsParameterMap 是不可序列化的。
  • 将参数放在会话中通常是一个坏主意。 HttpServletRequest 被设计为短命的。对于单个请求。因此,params 具有相同的目的。如果您需要将数据保留更长的时间,则将数据从参数中拉出并将它们放入您可以存储在会话中的对象中。

标签: grails request httprequest params grails-2.0


【解决方案1】:

好吧,按照@Gregg 的建议,将数据从参数映射中提取到一个对象中,您可以这样做:

Map paramsMap = new HashMap()

params.each {key, value ->
  paramsMap.put(key, value)
}

并将这个 HashMap 保存在会话中。希望对你有帮助。

【讨论】:

  • 我重复我的问题。我想要它在应用程序级别。我不想在会话中保存参数的任何地方编写以下代码。而不是下面的代码,我可以简单地使用 params as java.util.HashMap Map paramsMap = new HashMap() params.each {key, value -> paramsMap.put(key, value) }
  • @user1180463 然后把它放在一个实用函数中。 “我想要它在应用程序级别”是什么意思?你认为我可能在 grails 中有一个开关,使 params 对象成为适合你目的的 HashMap 吗?那会有点奇怪。
猜你喜欢
  • 2011-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多