java Portlet间通信页面提交
我正在使用JavaLiferay门户,其中有多个portlet。我想用一个表单创建一个portlet,当它被提交时,数据被检索,具体结果显示在其他一些页面portlet中。但不幸的是,这些事情并没有妨碍我们
我正考虑使用会话,但出现了两个问题
- javascript value assignment to java variable.
- if the values are passed to the page on which the specific portlet is placed, that portlet doesn't get the values.
然后,我听到了Portlet间通信(IPC)的概念,并从“liferay in action”获得了一些帮助,但如果两个Portlet都放在同一页面上,那么代码就会工作,我的要求是一个Portlet放在第一页上,当表单提交时,它会重定向到第二页,到第二个portlet获取参数。我尝试了更多的例子,但它没有在我的方式工作
# 1 楼答案
我找到了另一种方法,一种相对简单的方法,只是在liferay上尝试了那个维基
# 2 楼答案
据我所知,IPC确实只在同一页面上的Portlet之间工作。此外,portlet规范没有提供切换页面的通用机制,因此您只能使用特定于门户供应商的方法来实现这一点。但是,使用公共呈现参数和到另一个页面的正确构造的Liferay URL,您应该能够实现您想要的结果:http://www.liferay.com/web/guest/community/forums/-/message_boards/message/1207858
# 3 楼答案
据我所知,您有一些JavaScript参数要传递到下一页。不过,您可以使用PortletSession的APPLICATION_作用域来实现这一点,您可以通过将值放入输入中来解决将JS参数转换为Java的问题。如果这些输入变量不应该由用户编写,而您从其他地方获取它们,则可以隐藏输入:
在jsp中:
然后在需要时提交表格。接下来,您可以在portlet的ProcessAction方法中执行以下操作:
在另一个portlet中,可以通过调用
当然,如果你不能简单地把它们放在下一个页面的url中,你就可以这样做