如何通过ajax修改webflow中的对象?

时间:2012-05-02 19:40:25

标签: java ajax spring-mvc spring-webflow

我无法理解ajax,控制器和网络流如何互动。

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

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

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

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

亚当

1 个答案:

答案 0 :(得分: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
});