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