【问题标题】:How to call controller method on click of tab in liferay ui tabs?如何在点击liferay ui标签中的标签时调用控制器方法?
【发布时间】:2012-06-19 05:38:49
【问题描述】:

我在我的项目中使用 liferay ui 标签。我想通过单击选项卡来调用控制器。我使用 portlerURL 属性进行尝试,但它不起作用。

这是我的代码 sn-p :-

view.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://liferay.com/tld/portlet" prefix="liferay-portlet"%>
<%@ taglib uri="http://liferay.com/tld/theme" prefix="liferay-theme"%>
<%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui"%>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<%@page import="com.liferay.portal.kernel.util.ParamUtil"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>


<liferay-theme:defineObjects />
<portlet:defineObjects />


<liferay-portlet:renderURL var="portletURL" />

<%
    //We must Specify a default value for tabs. In this example it is sunday. Else it //will throw an error.
    String tabValue = ParamUtil.getString(request, "tab", "sunday");
    String tabsURL = "/" + tabValue.trim() + ".jsp";
    String tabNames = "Sunday,Monday,Tuesday";
    String tabVal = "sunday,monday,tuesday";
    if (permissionChecker.isCompanyAdmin(themeDisplay.getCompanyId())) {
        tabNames += ",Admin";
        tabVal += ",admin";
    }

    PortletURL URL = renderResponse.createActionURL();
    URL.setParameter("click","tabClick");
%>

<liferay-ui:tabs names="<%=tabNames%>" tabsValues="<%=tabVal%>" param="tab" url="<%= portletURL %>" />

<c:import url="<%= tabsURL %>"></c:import>

控制器:-

import com.liferay.util.bridges.mvc.MVCPortlet;

import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;

/**
 * Portlet implementation class TabDemoPortlet
 */
public class TabDemoPortlet extends MVCPortlet {

    public void sunday(ActionRequest req,ActionResponse res) {
        System.out.println("Hello Sunday!!!");
    }

    public void monday(ActionRequest req,ActionResponse res) {
        System.out.println("Hello Monday!!!");
    }

    public void tuesday(ActionRequest req,ActionResponse res) {
        System.out.println("Hello Tuesday!!!");
    }
}

欢迎所有建议。提前谢谢!!!

【问题讨论】:

  • 只是一点点补充:标签中的 url 属性是用于 renderURL 的,在 render 方法中,您可以通过使用您输入的选项卡名称从请求中获取参数来检查单击了哪个选项卡。
  • @PrakashK,感谢您的精彩提示...

标签: tabs liferay liferay-6


【解决方案1】:

您必须创建多个 actionURL 并在 liferay-ui:tabs 中使用它们。像这样的东西

<portlet:actionURL name="sunday" var ="sundayURL"/>
<portlet:actionURL name="monday" var ="mondayURL"/>
<portlet:actionURL name="tuesday" var ="tuesdayURL"/>

<liferay-ui:tabs names="<%=tabNames%>" 
   url0="<%=sundayURL/>"
   url1="<%=mondayURL/>"
   url2="<%=tuesdayURL/>"/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 2020-07-24
    • 1970-01-01
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    • 2015-12-08
    相关资源
    最近更新 更多