我在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
如果我退出并登录,则效果很好。但我无法理解如何修复它保持相同的设置。
任何人都可以告诉我有没有修复。
答案 0 :(得分:1)
正如通过电子邮件所讨论的那样,我认为这是一个ClassLoader问题。 GrailsFlashScope类型的对象(加载到一个portlet中)试图转换为FlashScope(在第二个portlet中加载)。
即使GrailsFlashScope实现了FlashScope,从两个不同的类加载器加载的FlashScope类也不会被认为是相同的并且会抛出CCE。
我能想到修复它的唯一方法是将grails - * .jar文件(例如grails-web.jar)移动到某种共享jar文件夹(不确定Liferay中的位置)并将其从portlet WAR文件。
欢呼声
利