我正在grails portlet中使用def liferay_portlet_private_session_attributes = false
来进行liferay。
我用来与其他portlet共享 session 值。
session.getAttribute("orgid", PortletSession.APPLICATION_SCOPE)
构建时出现此错误,每次刷新URL时都要部署。
Caused by: java.lang.ClassCastException: org.codehaus.groovy.grails.web.servlet.GrailsFlashScope cannot be cast to org.codehaus.groovy.grails.web.servlet.FlashScope
如果我注销并登录,效果很好。但是我无法理解如何在保持相同设置的情况下进行修复。
有人能告诉我有什么解决办法吗?
最佳答案
正如通过电子邮件讨论的那样,我认为这是ClassLoader的问题。试图将类型GrailsFlashScope(加载到一个Portlet中)的对象强制转换为FlashScope(加载到第二个Portlet中)。
即使GrailsFlashScope实现了FlashScope,从两个不同的类加载器加载的FlashScope类也不被认为是相等的,并且会抛出CCE。
我可以解决的唯一方法是将grails-*。jar文件(例如grails-web.jar)移动到某种共享的jar文件夹(不确定Liferay中的位置)并将其从Portlet WAR中删除文件。
干杯
背风处
关于grails - grails portlet FlashScope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3482840/