2012-10-19 38 views
1

在我的grails项目中,我可以在应用程序级别上使用params map(GrailsParameterMap的对象)作为java.util.HashMap 吗?Grails params map as java.util.HashMap

我想为使用java.util.HashMap的Serializability做到这一点。 我可以在代码中随处使用params as java.util.HashMap。但是我怎么能在应用程序级别上实现这一点?

我正在使用grails 1.3.7

在此先感谢。

+0

你能更具体地告诉你想要完成什么吗?像一个例子或什么? –

+0

实际上,我确实在http会话中保存了这个参数映射,并且我还在应用程序服务器之间使用了会话复制。所以我在类GrailsParameterMap上得到了NotSerializableException。这就是为什么我想使用Params作为Seralizable的java.util.HashMap,而GrailsParameterMap不是Serializable。 – user1180463

+3

将参数放在会话中通常只是一个糟糕的主意。 HttpServletRequest被设计为短暂的。对于单个请求。因此,参数符合相同的目的。如果您需要保留比这更长的数据,请将数据从参数中提取出来,并将其放入可存储在会话中的对象中。 – Gregg

回答

2

好了,下面@Gregg建议,把数据从PARAMS的映射成一个对象,你可以做这样的:

Map paramsMap = new HashMap() 

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

,并保存此HashMap会话。我希望它有帮助。

+0

我重复我的问题。我希望在应用程序级别。我不想在任何地方编写follwing代码,我会在会话中保存参数。相反,下面的代码,我可以简单地使用PARAMS作为java.util.HashMap中 地图paramsMap =新的HashMap() params.each {键,值 - > paramsMap.put(键,值) } – user1180463

+1

@ user1180463然后把它在一个效用函数中。 “我想要在应用程序级别上”是什么意思?你认为我可能会在Grails中进行切换,使params对象成为一个适合您的目的的HashMap吗?那会很奇怪。 –