我使用的是java救生筏门户,其中有多个portlet。我希望创建一个带有表单的portlet,当它提交时,数据将被检索,并且特定的结果将显示在其他一些页面portlet中。但不幸的是,这些事情并没有妨碍我们前进。
我正在考虑使用会话,但有两个问题解决了。
然后,我听到了Inter通信(IPC)的概念,并从“救生筏在行动中”获得了一些帮助,但是如果两个Portlet都放在同一个页面上,那么代码就能工作,我的要求是一个portlet放在第一个页面上,当表单提交时,它被重定向到第二个页面,然后重定向到第二个portlet来获取参数。我试了更多的例子,但这并没有妨碍我的方式。
发布于 2012-09-28 12:50:49
我找到了另一种方法,一个相对简单的方法,刚刚尝试了救生筏的wiki
发布于 2012-11-14 15:29:53
正如我所理解的,您有一些JavaScript参数,您希望将这些参数传递到下一页。但是,您可以使用APPLICATION_SCOPE of PortletSession来实现,并且可以通过在输入中放置值来解决将JS参数转换为Java的问题。如果用户不应该编写这些输入var,并且从其他地方获取它们,则可以将输入隐藏起来:
在您的jsp中:
<form>
<input type="hidden" id="myinput1" name="in1" value="">
<input type="hidden" id="myinput1" name="in2" value="">
</form>
<script>
var a = "avalue";
var b = "bvalue";
document.getElementById("myinput1").value=a;
document.getElementById("myinput2").value=b;
</script>然后在需要的时候提交表单。接下来,您可以在portlet的ProcessAction方法中这样做:
String a= request.getParameter("in1");
String b= request.getParameter("in2");
PortletSession session = request.getPortletSession();
session.setAttribute("a", a , PortletSession.APPLICATION_SCOPE);
session.setAttribute("b", b , PortletSession.APPLICATION_SCOPE);在另一个portlet中,您可以通过调用
session.getAttribute("a",PortletSession.APPLICATION_SCOPE);当然,如果您不能简单地将它们放在下一页的url中的话。
发布于 2012-09-28 09:13:43
据我所知,IPC实际上只在同一页面上的portlets之间工作。此外,portlet规范没有提供切换页面的通用机制,因此您只能使用特定于门户供应商的方法来实现这一点。但是,使用公共呈现参数和对另一个页面正确构造的Liferay,您应该能够实现您想要的结果:董事会/信息/1207858
https://stackoverflow.com/questions/12629562
复制相似问题