grails - grails portlet FlashScope

标签 grails portlet

我正在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/

相关文章:

Portlet - setAttribute 和 setRenderParameter 之间的差异

hibernate - 将Hibernate SELECT语句记录到自己的日志文件中

grails - Chrome开发人员工具显示Grails应用程序中动态生成的文件的下载状态已取消

java - Java portlet 可以嵌入到 ASP.NET 页面中吗?

java - 如何实现 JSR 规范

tomcat - 在 liferay 中部署 portlet 时出错

tomcat - 从 Intellij Idea 热部署 Liferay Maven portlet 到捆绑的 Liferay Tomcat

javascript - 如果弹出窗口被打开,则禁止刷新

Grails 解决某些依赖项非常慢

json - 无法将JSONObject从Grails Controller 传递到Grails服务