2

我正在尝试创建一个可以取消的表单。我发现存在 CancelableFormController 类。但是找不到一个很好的解释如何使用它。我的理解是您必须在请求中提供一个变量。但是你如何在弹簧形式中做到这一点?如果有人可以帮助我实现这一点。或者只是将我指向一个好的教程,因为我找不到一个。

在此先感谢,大卫

4

3 回答 3

4

这是SimpleFormController自 Spring 3 起已弃用的 API 的一部分,因此我不鼓励使用它。带注释的 MVC 中的替代类实际上并不存在,但可以使用多个请求映射提供(来自spring 论坛的修改示例):

@RequestMapping(params="cancel=true")
public String doCancel() {
    return "cancelView";
}


@RequestMapping(params="cancel!=true")
public String formSubmit(@ModelAttribute MyModelObject obj) {
    processForm(obj);
    return "successView";
}
于 2012-05-20T14:06:08.497 回答
1

越简单通常越好。“取消”表单的最简单方法就是不提交它。为什么不让取消“按钮”成为一个链接,将用户(直接)带到您希望用户在取消后去的任何地方?

如果您更喜欢按钮,只需将链接样式设置按钮即可。

唯一不起作用的情况是您需要在取消时采取特定操作,但通常情况并非如此。如果是这样,这意味着有一些与表单相关的状态或上下文在表单外部。在这种情况下,您应该使用 Spring Web Flow 之类的东西,并且它具有处理状态转换的完善约定(取消只是一种特殊情况)。

但是,最有可能的<a href="...">Cancel</a>是,您只需要一个简单的。没有必要把事情复杂化!

于 2012-05-22T05:17:59.047 回答
0

随着简单表单控制器的实现,有多种方法可以向客户端提供初始视图和成功视图。但是当用户取消表单时会发生什么?谁来处理 Form 的 Cancel 操作?

使用 Cancelable FormController 可以立即解决上述问题。好消息是 Cancelable FormController 扩展了 SimpleForm 控制器,因此该控制器也可以看到所有功能。假设用户单击取消按钮,框架将在请求参数中检查名称为“cancelParamKey”的键。如果是这样,那么它将调用 onCancel() 方法。考虑以下定义,

public class MyCompleteFormController extends CancellableFormController{

    public ModelAndView onCancel(){
        return new ModelAndView("cancelView");
    }
}
于 2012-05-20T14:10:07.223 回答