portlet之间的通信
1.portlet之间的事件通信
在一个portlet任何个方法里进行设置事件:
public void processAction(ActionRequest request, ActionResponse response)
???throws PortletException, IOException {
???response.setEvent("eventbyparameter", "byparameter");
?}
在另一个portlet处理找一个事件:
public void processEvent(EventRequest request, EventResponse response)
???throws PortletException, IOException {
??Event event = request.getEvent();
??if(event.getName().equals("eventbyparameter")) {
???? response.setRenderParameter("parameter", event.getValue().toString());
??}
}
?
这是需要在portlet.xml文件里进行配置的,如下:
在一个portlet里定义发布事件名称
<supported-publishing-event>
??????? ?<name>eventbyparameter</name>
</supported-publishing-event>
在另一个portlet里定义相应处理事件
<supported-processing-event>
??????? ?<name>eventbyparameter</name>
?</supported-processing-event>
事件的定义:
<event-definition>
??<name>eventbyparameter</name>
??<value-type>java.lang.String</value-type>
?</event-definition>
?
2.portlet之间的公共参数通信
在一个portlet里设置参数:
public void processAction(ActionRequest request, ActionResponse response)
???throws PortletException, IOException {
???response.setRenderParameter("pub-by-parameter", "combypvalue");
?}
在另一个portlet里获得参数:
protected void doView(RenderRequest request, RenderResponse response)
???throws PortletException, IOException {
?? String combyparameter = request.getParameter("pub-by-parameter");
?}
这是需要在portlet.xml文件里进行配置的,如下:
?
在portlet.xml文件里设置公共渲染参数;两个portlet都要设置,如下:
在一个portlet定义里设置:
<supported-public-render-parameter>pub-by-parameter</supported-public-render-parameter>
在另一个portlet定义设置:
<supported-public-render-parameter>pub-by-parameter</supported-public-render-parameter>
最好还需要定义公共渲染参数,如下:
<public-render-parameter>
??<identifier>pub-by-parameter</identifier>
??<name>combyparameter</name>
?
3.portlet之间的session通信
1 楼 liutao841204 2010-10-21 这个通信你已经做过了吗? 2 楼 hm2008 2010-11-04 不知道行不行,试试先。 3 楼 hua758209 2011-03-18 貌似不太好使