0

2つの異なるプロジェクトに2つのページがあり(つまり、単一にデプロイされた異なるearファイルにあります)、ページから別のページにデータを渡す必要があります。

コマンドリンクのアクションで私はします

public String onSalva() {
     ADFContext.getCurrent().getApplicationScope().put("comingFrom", md);

     return "goToPrint";
}

他のページのバッキングBeanのコンストラクターメソッドでは、次のようにします。

page = (String)ADFContext.getCurrent().getApplicationScope().get("comingFrom");

ただし、ページは常にnullです。プロセス、セッション、リクエストのスコプを使ってみましたが、運が悪かったです。パラメータを手動で指定して他のページにリダイレクトする方法はありますか?何かのようなもの

   return "goToPrint?pageFrom="+md;
}
4

1 に答える 1

1

「EAR が異なる」とは、2 つのアプリケーションが互いに分離されており、Java を介して一方から他方にデータを取得する簡単な方法がないことを意味します。

代わりに、HTTP プロトコルを使用する必要があります。URL に移動するだけの場合は、HttpServletResponse.sendRedirect()

これにより、ユーザーが URL をロケーション バーに入力したかのように、ブラウザで新しいページが開きます。ブラウザは最初のアプリケーションと通信しなくなります

最初のアプリケーションにとどまり、相手側にデータを送信するだけの場合は、いくつかの方法があります: 他のアプリにiframe- を埋め込むことができます。これにより、データを交換することはできませんが、ユーザーはフォームに入力して送信することができます。 、 例えば。

または、 HttpClientなどのライブラリを使用して、他のアプリケーションと通信することもできます。これにより、POST 要求を送信し、Web ブラウザーが他のアプリで実行できるすべてのことを行うことができます。

最後に、両方の EAR が消費する共有エンタープライズ Bean を定義できます。1 つの方法は、両方のアプリがサブスクライブするメッセージ サービスを定義することです。1 つ目はメッセージを作成してキューに入れ、2 つ目はメッセージを待って処理を行います。

于 2011-11-14T15:36:24.503 に答える