【问题标题】:From one Liferay Plugin project invoking a another Liferay Plugin Project从一个 Liferay 插件项目调用另一个 Liferay 插件项目
【发布时间】:2015-10-16 12:34:06
【问题描述】:

我使用 Liferay portlet bundle 6.2 (Tomcat) 和 Liferay IDE(eclipse)。我创建了一个 Liferay 插件项目。我在这个项目中使用 Portlet Preferences 保存了一些数据,并创建了一个按钮,其名称为“搜索”。我的问题是,当我按下在第一个 Liferay 插件项目中创建的“搜索”按钮时,如何调用另一个 Liferay 插件项目?稍后我将从第二个 Liferay 插件项目中检索我由第一个项目保存的数据。

接下来是 search.jsp,我在其中创建了按钮搜索

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ taglib uri="http://alloy.liferay.com/tld/aui" prefix="aui" %>
<%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui" %>

<portlet:defineObjects />


<aui:button-row cssClass="guestbook-buttons">

<portlet:renderURL var="addEntryURL">
    <portlet:param name="mvcPath" value="/html/voda/edit_entry.jsp"></portlet:param>
</portlet:renderURL>

<aui:button onClick="<%= addEntryURL.toString() %>" value="Add Entry"></aui:button>

<portlet:renderURL var="showURL">
<portlet:param name="mvcPath" value="/html/voda/show_entries.jsp"></portlet:param>
</portlet:renderURL>

<aui:button onClick="<%= showURL.toString() %>" value="Show"></aui:button>

   <portlet:renderURL var="searchURL">
<portlet:param name="mvcPath" value="/html/voda/search.jsp"></portlet:param>
</portlet:renderURL>

<aui:button onClick="<%= searchURL.toString() %>" value="Search"></aui:button>

【问题讨论】:

  • 您能否详细说明invoking another liferay project 是什么意思?您的意思是单击第一个 portlet 中的按钮,您想从第二个 portlet 获取数据并在您的第一个 portlet 中再次显示?或者您想在单击按钮时在您的第一个 portlet 中显示第二个 portlet 的 JSP?或者你还有什么别的想法。了解您为什么要做这样的事情而不是拥有一个单一的 portlet 会很有帮助。谢谢
  • 我想在单击按钮时在我的第一个 portlet 中显示第二个 portlet 的 JSP。当我部署这两个项目时,我都在 Liferay 第一页(localhost:8080)中,但我将首先显示第一个 portlet,当我单击第一个 portlet 中的按钮时,它应该转到第二个 portlet 的 jsp。我有一份新工作,我是初级开发人员,我的厨师给我点了这个。我将学习 Liferay,这对我来说非常重要。我认为这将是一个大项目,并且有很多桌子。一个很好的链接,他们解释这对我也很有帮助。谢谢

标签: java jsp liferay


【解决方案1】:

您可以参考this SO answer,它显示了如何在弹出窗口中从第一个 portlet 打开第二个 portlet。

同样的原则适用,您可以忽略打开弹出窗口的代码。

以下是答案中的要点(答案中提供了详细信息),您应该考虑并忽略其他 javascript 内容:

  1. 您需要在您的第一个 portlet 中创建一个呈现 URL,并使用以下属性 portletName="testPopup_WAR_testPopupportlet"testPopup_WAR_testPopupportlet 替换为您的第二个 portlet 的 ID。
  2. 在锚标签&lt;a&gt;中提供上述链接。
  3. 更改第二个 portlet 的 liferay-portlet.xml 中的 &lt;add-default-resource&gt;true&lt;/add-default-resource&gt;
  4. 或者如果liferay-portlet.xml 没有变化,那么您应该在portal-ext.properties 中拥有portlet.add.default.resource.check.whitelist 属性。

如果您想学习 Liferay Portlet 开发,那么最好的方法是从书 Liferay in ActionPortlets in Action 开始,或者从 Liferay developer NetworkLiferay Developer Guide 的新教程开始。

希望对您有所帮助。

【讨论】:

  • 谢谢你 Prakash K,我很高兴,因为我已经解决了我的问题,你的解释对我帮助很大。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-21
  • 2016-09-09
  • 2014-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-10
相关资源
最近更新 更多