1

ajax、コントローラー、および Web フローがどのように相互作用するのか理解できません。

現在、私のプロジェクトは、フローを通じてさまざまなビュー状態からページからページへと移動します。

ただし、これらの異なるページのいくつかでは、「currentObject」でのサーバー処理のためにさまざまなコントローラーに送信される ajax 呼び出しがいくつかあります。サービスはオブジェクトを返します。これを「currentObject」として Web フローに戻す必要があります。

明確にするために、オブジェクトAをオブジェクトBに関連付けたいと思います。オブジェクトAは「currentObject」に関連付けられています。私はサーバー処理を行い、関連付けを完了し(したがって、「currentObject」はオブジェクトBに関連付けられているオブジェクトAに関連付けられます)、オブジェクトをデータベースに保存します。「新しいオブジェクトの作成」をクリックすると、web-flow にはオブジェクト A がオブジェクト B に関連付けられていない「currentObject」がまだ含まれています。

更新した "currentObject" をコントローラーから web-flow に入れたいのですが、ajax 呼び出しを介して web-flow でオブジェクトを変更する最良の方法は何ですか?

アダム

4

1 に答える 1

1

これはちょっと難しい問題です。私は同様の状況にあり、この投稿が役立つことがわかりました: Ajax + Spring Webflow

基本的な問題は、Webflow のオブジェクトがシリアル化されているため、AJAX 呼び出しを実行してから、通常のコントローラーで行うように DB で何かを変更するだけでは機能しないことです。

私の場合、基本モデル オブジェクトは「計画」であり、「タスク」という子オブジェクトをドロップしたいと考えました。次のように、Webflow の XML 構成でトランジションを設定しました。

<transition on="dropTask">
    <evaluate expression="planService.dropTaskFromPlan(requestParameters.taskID,  plan)" />
</transition>

クラス「planService」は、私の「Plan」オブジェクトを介して実行され、指定された ID を持つタスクを見つけて削除します。

ajax 呼び出しは次のとおりです。

var targetUrl = $("#actionPlanForm").attr("action") +     '&_eventId_dropTask=_eventId_dropTask';
$.ajax({
    type : 'POST',
    data: $("#actionPlanForm").serialize() + '&taskID=' + taskID,
    url : targetUrl
});
于 2012-06-25T17:47:09.320 に答える