grails portlet FlashScope

时间:2010-08-14 10:02:08

标签: grails portlet

我在grails portlet中使用def liferay_portlet_private_session_attributes = false来表示liferay。 这是我用来与其他portlet共享会话值。

session.getAttribute("orgid", PortletSession.APPLICATION_SCOPE) 

我在构建时遇到此错误,每次刷新网址时都会部署。

Caused by: java.lang.ClassCastException: org.codehaus.groovy.grails.web.servlet.GrailsFlashScope cannot be cast to org.codehaus.groovy.grails.web.servlet.FlashScope

如果我退出并登录,则效果很好。但我无法理解如何修复它保持相同的设置。

任何人都可以告诉我有没有修复。

1 个答案:

答案 0 :(得分:1)

正如通过电子邮件所讨论的那样,我认为这是一个ClassLoader问题。 GrailsFlashScope类型的对象(加载到一个portlet中)试图转换为FlashScope(在第二个portlet中加载)。

即使GrailsFlashScope实现了FlashScope,从两个不同的类加载器加载的FlashScope类也不会被认为是相同的并且会抛出CCE。

我能想到修复它的唯一方法是将grails - * .jar文件(例如grails-web.jar)移动到某种共享jar文件夹(不确定Liferay中的位置)并将其从portlet WAR文件。

欢呼声