兩個portlet之間跳轉并傳值
在不同的Portlet之間傳參數,這想這是所有用Liferay的人都想實現的,但在以前的版本中確實做不到?,F在的版本可以了,并且很簡單
首先,打開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>
<identifier>參數名</identifier>
<qname xmlns:x="http://www.liferay.com/public-render-parameters">x:參數名</qname>
</public-render-parameter>
整體是這樣











































































































對參數進行賦值的話,就是在Action中用下面這句話:
actionResponse.setRenderParameter("參數名", 參數值);
獲取的話,就直接像取其它參數一下直接獲?。?/div>
/**
* @author noah.xiang
*/
public class ChartControlerPortlet extends MVCPortlet {

@Override
public void processAction(ActionRequest actionRequest,
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)
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);
}

}
在Action中,String 變量 = ParamUtil.getString(request, "參數名", "默認值");
在JSP中,<%=renderRequest.getParameter("參數名")%>
整體代碼如下:















































眼鏡蛇
posted on 2011-10-27 18:36 眼鏡蛇 閱讀(3154) 評論(1) 編輯 收藏 所屬分類: Liferay