1

I need help and it's really confusing. I've tried to follow all example on the web about IPC - pass Parameter between portlet using event.

Here's my code if I only want to pass my attribute using event:

QName qName = new QName("http://liferay.com/events", "ipc.send");
response.setEvent(qName, pitchType);

and then in my getter Event Portlet my code

@ProcessEvent(qname = "{http://liferay.com/events}ipc.send")
public void catchBall(EventRequest request, EventResponse response) {
    Event event = request.getEvent();
    String send = (String) event.getValue();
    response.setRenderParameter("send", send);
}

it only passes one parameter with and only String. I've tried passing Object like Foo to this parameter but no luck. It won't run. Any idea how to pass Object via event?

please really need help here.. :(

4

1 に答える 1

2

カスタム オブジェクトをイベント パラメータとして渡すのは、特にプラグインの境界を越える場合に注意が必要です。この場合、クラスは両方のプラグインで利用可能でなければなりません。

一般的な推奨事項は、UI レイヤー (ポートレット イベントなど) での通信を非常に浅く保ち、重いオブジェクトに依存しないことです。この通信は実際にはビジネス層であってはならないことに注意してください。したがって、実際のデータの識別子、主キー、またはその他のプレースホルダーを渡しても問題ありません。誰もイベントを受け取ることに興味を持っていないと仮定すると、そもそもイベントを構築するためにあまり労力を費やすべきではありません。

または、関心のあるオブジェクトをビジネス レイヤーにキャッシュして、実際に処理されている場合 (たとえば、イベントが受信された場合) にすぐに利用できるようにすることもできます。

于 2013-04-21T10:58:40.413 に答える