Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring MVC isFormSubmission()等价于注释?_Java_Spring_Spring Mvc - Fatal编程技术网

Java Spring MVC isFormSubmission()等价于注释?

Java Spring MVC isFormSubmission()等价于注释?,java,spring,spring-mvc,Java,Spring,Spring Mvc,使用Spring MVC,很容易表达这样一个概念:“如果用户使用POST或包含'isSubmit'参数,则用户正在提交表单。”您只需扩展SimpleFormController并覆盖isFormSubmission方法即可 然而,SpringMVC现在使用这些整洁的注释,如@RequestMapping来处理请求@RequestMapping有一个明显的过滤器,用于过滤某人是使用GET还是POST,但我看不到对SimpleFormController提供的所有有用逻辑的内在支持。我是否还可以使用

使用Spring MVC,很容易表达这样一个概念:“如果用户使用POST或包含'isSubmit'参数,则用户正在提交表单。”您只需扩展
SimpleFormController
并覆盖
isFormSubmission
方法即可

然而,SpringMVC现在使用这些整洁的注释,如
@RequestMapping
来处理请求
@RequestMapping
有一个明显的过滤器,用于过滤某人是使用GET还是POST,但我看不到对SimpleFormController提供的所有有用逻辑的内在支持。我是否还可以使用注释?

从以下位置复制:


您只能使用RequestMapping选项来定义所需的功能。Annotations控制器没有实现任何可以使用的接口。

因此,经过一点调查,实际上有几种方法可以处理这种情况

第一种方法是在类级别使用带有
@RequestMapping
注释的
SimpleFormController
。@RequestMapping的一个鲜为人知但相当酷的特性是,它非常清楚如何处理实现Spring的
Controller
接口的类。这里唯一的缺点是我仍然在使用旧的MVC接口和类,而它们在Spring3.0中将被弃用


第二条道路是由上面的kgiannakakis指出的。只需为submit可以调用的每一种方法创建一个
@RequestMapping
方法,并让它们都只调用一个submit方法,可以使用构造函数链接样式,也可以使用一些私有方法。简单易懂。谢谢你,kgiannakakis

以下是使用路径映射的一个示例:

    @RequestMapping(params = "formAction=APPROVE", method = RequestMethod.POST)
    public String myMethod ()....

只有在有一个名为“formAction”的字段,其值为“APPROVE”的帖子才会调用此方法。

列出的其他答案适用于带有@RequestMapping注释的方法

但是,如果您想在用@InitBinder注释的方法上实现同样的效果,只需执行以下操作:

@InitBinder
public void initBinder(HttpServletRequest request) {
    if ("POST".equals(request.getMethod()){
        //Do something
    }
}

但这只会进一步缩小请求范围。我不能说“这是一篇文章或者它有这个参数”。我只能说“这是一篇文章并且它有这个参数”。你可以有两个不同的方法调用一个私有submitForm方法。第一个将使用RequestMapping来处理POST案例,另一个使用GET和参数。表单提交处理程序方法可以由多种带注释的处理程序方法调用,每种方法都可以捕获表示表单提交的各种方法(例如,一种方法捕获帖子,另一种方法捕获带有参数的方法)。这并不漂亮,但是你要做的是非常奇怪的,并且不是一个好主意。
@InitBinder
public void initBinder(HttpServletRequest request) {
    if ("POST".equals(request.getMethod()){
        //Do something
    }
}