两个portlet之间跳转并传值

在不同的Portlet之间传参数,这想这是所有用Liferay的人都想实现的,但在以前的版本中确实做不到。现在的版本可以了,并且很简单
 
首先,打开portlet.xml文件,找到你想实现传值和接收值的portlet片段,在每个片段中加上下面这行代码:
<supported-public-render-parameter>参数名</supported-public-render-parameter>
然后,在最后面定义这个参数,写法是这样的:
<public-render-parameter>
    <identifier>参数名</identifier>
    <qname xmlns:x="http://www.liferay.com/public-render-parameters">x:参数名</qname>
  </public-render-parameter>
整体是这样
<? xml version="1.0" ?>

< portlet-app
    
version ="2.0"
    xmlns
="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation
="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
>
    
        
< portlet >
        
< portlet-name > chartcontroler </ portlet-name >
        
< display-name > ChartControler </ display-name >
        
< portlet-class >
            com.noah.action.ChartControlerPortlet
        
</ portlet-class >
        
< init-param >
            
< name > view-jsp </ name >
            
< value > /html/chartcontroler/view.jsp </ value >
        
</ init-param >
        
< expiration-cache > 0 </ expiration-cache >
        
< supports >
            
< mime-type > text/html </ mime-type >
            
< portlet-mode > VIEW </ portlet-mode >
        
</ supports >
        
< resource-bundle > content/Language </ resource-bundle >
        
< portlet-info >
            
< title > ChartControler </ title >
            
< short-title > ChartControlerPortlet </ short-title >
            
< keywords ></ keywords >
        
</ portlet-info >
        
< portlet-preferences >
            
< preference >
                
< name > years </ name >
                
< value > 2010,2011,2012 </ value >
            
</ preference >
        
</ portlet-preferences >
        
< security-role-ref >
            
< role-name > administrator </ role-name >
        
</ security-role-ref >
        
< security-role-ref >
            
< role-name > guest </ role-name >
        
</ security-role-ref >
        
< security-role-ref >
            
< role-name > power-user </ role-name >
        
</ security-role-ref >
        
< security-role-ref >
            
< role-name > user </ role-name >
        
</ security-role-ref >
        
< supported-public-render-parameter > currentYear </ supported-public-render-parameter >
        
< supported-public-render-parameter > report </ supported-public-render-parameter >
        
< supported-public-render-parameter > partner </ supported-public-render-parameter >
        
< supported-public-render-parameter > portfolio </ supported-public-render-parameter >
    
</ portlet >
    
< portlet >
        
< portlet-name > chart </ portlet-name >
        
< display-name > Chart </ display-name >
        
< portlet-class > com.noah.action.ChartPortlet </ portlet-class >
        
< init-param >
            
< name > view-jsp </ name >
            
< value > /html/chartportlet/view.jsp </ value >
        
</ init-param >
        
< expiration-cache > 0 </ expiration-cache >
        
< supports >
            
< mime-type > text/html </ mime-type >
            
< portlet-mode > VIEW </ portlet-mode >
        
</ supports >
        
< resource-bundle > content/Language </ resource-bundle >
        
< portlet-info >
            
< title > Chart </ title >
            
< short-title > ChartPortlet </ short-title >
            
< keywords ></ keywords >
        
</ portlet-info >
        
< security-role-ref >
            
< role-name > administrator </ role-name >
        
</ security-role-ref >
        
< security-role-ref >
            
< role-name > guest </ role-name >
        
</ security-role-ref >
        
< security-role-ref >
            
< role-name > power-user </ role-name >
        
</ security-role-ref >
        
< security-role-ref >
            
< role-name > user </ role-name >
        
</ security-role-ref >
        
< supported-public-render-parameter > currentYear </ supported-public-render-parameter >
        
< supported-public-render-parameter > report </ supported-public-render-parameter >
        
< supported-public-render-parameter > partner </ supported-public-render-parameter >
        
< supported-public-render-parameter > portfolio </ supported-public-render-parameter >
    
</ portlet >
    
    
< public-render-parameter >
        
< identifier > currentYear </ identifier >
        
< qname  xmlns:x ="http://www.liferay.com/public-render-parameters" > x:currentYear </ qname >
    
</ public-render-parameter >
    
< public-render-parameter >
        
< identifier > report </ identifier >
        
< qname  xmlns:x ="http://www.liferay.com/public-render-parameters" > x:report </ qname >
    
</ public-render-parameter >
    
< public-render-parameter >
        
< identifier > partner </ identifier >
        
< qname  xmlns:x ="http://www.liferay.com/public-render-parameters" > x:partner </ qname >
    
</ public-render-parameter >
    
< public-render-parameter >
        
< identifier > portfolio </ identifier >
        
< qname  xmlns:x ="http://www.liferay.com/public-render-parameters" > x:portfolio </ qname >
    
</ public-render-parameter >
</ portlet-app >
对参数进行赋值的话,就是在Action中用下面这句话:
actionResponse.setRenderParameter("参数名", 参数值);
获取的话,就直接像取其它参数一下直接获取:
在Action中,String  变量 = ParamUtil.getString(request, "参数名", "默认值");
在JSP中, <%=renderRequest.getParameter("参数名")%>
 
整体代码如下:
两个portlet之间跳转并传值
两个portlet之间跳转并传值
public class ChartControlerPortlet extends MVCPortlet {

    @Override
    
public void processAction(ActionRequest actionRequest,
两个portlet之间跳转并传值            ActionResponse actionResponse) 
throws IOException, PortletException {
        String currentYear 
= ParamUtil.getString(actionRequest, "currentYear""2010");
        String report 
= ParamUtil.getString(actionRequest, "report""");
        String partner 
= ParamUtil.getString(actionRequest, "partner""Bocholter Energie- und Wasserversorgung GmbH");
        String portfolio 
= ParamUtil.getString(actionRequest, "portfolio""");
        
        actionResponse.setRenderParameter(
"currentYear"currentYear);
        actionResponse.setRenderParameter(
"report"report);
        actionResponse.setRenderParameter(
"partner"partner);
        actionResponse.setRenderParameter(
"portfolio"portfolio);
        
//actionResponse.setRenderParameter("jspPage", "/html/chartportlet/view.jsp");
        super.processAction(actionRequest, actionResponse);
    }


    @Override
    
public void render(RenderRequest request, RenderResponse response)
两个portlet之间跳转并传值            
throws PortletException, IOException {
        String currentYear 
= ParamUtil.getString(request, "currentYear""2010");
        String report 
= ParamUtil.getString(request, "report""");
        String partner 
= ParamUtil.getString(request, "partner""");
        String portfolio 
= ParamUtil.getString(request, "portfolio""");

        PortletPreferences prefs 
= request.getPreferences();
        String years 
= prefs.getValue("years""2010,2011,2012");
        
//String portfolios prefs.getValue("portfolios", "Absatzportfolio: A-a,Absatzportfolio: B-b,Absatzportfolio: C-c");
        
//String partners prefs.getValue("partners", "");

        //顺便说一下,这一行,可以实现通过Session传值,有兴趣的可以研究一下
        request.getPortletSession().setAttribute(DataPoolUtil.SESSION_SHARED_YEAR, currentYear, PortletSession.APPLICATION_SCOPE);

        request.setAttribute(
"years"years);
        request.setAttribute(
"portfolios"portfolio);
        request.setAttribute(
"currentYear"currentYear);
        request.setAttribute(
"report"report);
        request.setAttribute(
"partner"partner);
        
super.render(request, response);
    }

 

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值