1

我无法理解 ajax、控制器和 Web 流如何交互。

截至目前,我的项目通过流程从不同的视图状态从一个页面移动到另一个页面。

但是,在其中一些不同的页面上,我有一些 ajax 调用被定向到各种控制器,以便在“currentObject”上进行服务器处理。服务返回一个对象,我需要将它作为我的“currentObject”放回网络流中。

只是为了说清楚:我想将对象 A 与对象 B 相关联,对象 A 与“currentObject”相关联。我进行服务器处理并完成关联(因此“currentObject”与关联到对象 B 的对象 A 相关联)并将对象保存到数据库。当我点击“创建新对象”时,web-flow 仍然有“currentObject”,其中对象 A 与对象 B 没有关联。

我想将我更新的“currentObject”从我的控制器放入 web-flow,那么通过 ajax 调用修改 web-flow 中的对象的最佳方法是什么?

亚当

4

1 回答 1

1

这是一个棘手的问题。我遇到了类似的情况,发现这篇文章很有帮助:Ajax + Spring Webflow

基本问题是您的 webflow 中的对象是序列化的,因此仅执行 AJAX 调用,然后像使用普通控制器那样修改数据库中的某些内容是行不通的。

就我而言,基本模型对象是“计划”,我想删除一个名为“任务”的子对象。我在我的 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 回答