在操作方法Liferay中重定向到另一个portlet

时间:2015-10-27 10:45:48

标签: java jsp liferay portlet

我有一些问题。当我点击按钮搜索时,我会重定向到另一个portlet并在同一个动作中保存一些数据。现在,当我单击按钮搜索时,它将在Java代码中执行actions方法searchEntry。我可以在java中的此操作方法搜索中重定向到另一个portlet吗?我怎么能这样做?还是另外一个Idee来解决这个问题?我发布了一部分jsp和java代码,其中是actions方法searchEntry。

JSP:

<portlet:actionURL name="searchEntry" var="customerURL"></portlet:actionURL>

<aui:form action="<%= customerURL %>" name="
    <portlet:namespace />fm">
    <aui:fieldset>
        <aui:input label="Customer ID" name="customerid"></aui:input>
    </aui:fieldset>
    <aui:button-row>
        <aui:button type="submit" onClick="<%= customerURL.toString() %>" value="Search">
        </aui:button>
    </aui:button-row>
</aui:form>

JAVA:

public void searchEntry(ActionRequest request, ActionResponse response) {
    int index = dataCustomerID.indexOf(ParamUtil.getString(request, "customerid"));
    System.out.println("You are now in method searchEntry " + index);
}

2 个答案:

答案 0 :(得分:0)

是的,您可以通过使用DoEvents创建该portlet的URL并调用PortletURLFactoryUtil.create()

来实现这一点

答案 1 :(得分:0)

重定向到删除了所需portlet的页面,而不是portlet iteself。就像,我们在大多数Web应用程序环境中都这样做。

因此,如果你能记住(硬编码)你丢弃portlet的页面,你可以按照以下步骤操作:

public void searchEntry(ActionRequest request, ActionResponse response) {
    int index = dataCustomerID.indexOf(ParamUtil.getString(request, "customerid"));
    System.out.println("You are now in method searchEntry " + index);

    /* perform operation with your data */

    response.sendRedirect("/html/customerpage");
}

但是,如果要绑定某些负责呈现在其他页面上删除的portlet的参数,则需要使用PortletURLFactoryUtil.create动态创建URL,如下所示:

public void searchEntry(ActionRequest request, ActionResponse response) {
    ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY);

    int index = dataCustomerID.indexOf(ParamUtil.getString(request, "customerid"));
    System.out.println("You are now in method searchEntry " + index);

    /* perform operation with your data */

    long groupId = themeDisplay.getScopeGroupId();
    String portletId = "customerpage_WAR_customerpageportlet";
    long plid = PortalUtil.getPlidFromPortletId(groupId, portletId);

    LiferayPortletURL renderURL = PortletURLFactoryUtil.create(request,
        portletId, plid, PortletRequest.RENDER_PHASE); 
    renderURL.setParameter("show.jsp", "/html/customerpage/show.jsp"); 

    response.sendRedirect(renderURL.toString());
}

上述代码中棘手的部分是获取plidPortalUtil中还有其他方法可供使用,具体取决于您的要求和数据。

获得plid的另一种方法是使用getFriendlyURLLayout(long groupId, boolean privateLayout, String friendlyURL) LayoutLocalServiceUtil {{1}}当你想根据friendlyURL获得plid时,你确定私有/公共布局。