使用Spring MVC,很容易表达“如果用户使用POST或者包含'isSubmit'参数,用户正在提交表单的概念。”您只需展开SimpleFormController
并覆盖isFormSubmission
方法。
但是,Spring MVC现在使用像@RequestMapping
这样的简洁注释来处理请求。对于是否有人使用GET或POST,@RequestMapping
有一个明显的过滤器,但我没有看到SimpleFormController提供的所有有用逻辑的任何固有支持。是否仍然可以使用注释?
答案 0 :(得分:1)
因此,经过一番调查后,实际上有几种方法可以解决这种情况。
第一种方法是继续在课程级别使用带有SimpleFormController
注释的@RequestMapping
。 @RequestMapping的一个鲜为人知但很酷的属性是它非常清楚如何处理实现Spring Controller
接口的类。这里唯一的缺点是我仍在使用旧的MVC接口和类,它们将在Spring 3.0中被弃用。
上面的kgiannakakis指出了第二种方式。只需为可以调用提交的每种方式创建一个@RequestMapping
方法,并让它们只需要以构造函数链接样式或某些私有方法调用单个提交方法。简单易懂。谢谢,kgiannakakis!
答案 1 :(得分:0)
从here复制:
Path mappings can be narrowed through parameter conditions: a sequence of
"myParam=myValue" style expressions, with a request only mapped if each such
parameter is found to have the given value. "myParam" style expressions are
also supported, with such parameters having to be present in the request
(allowed to have any value). Finally, "!myParam" style expressions indicate
that the specified parameter is not supposed to be present in the request.
您只能使用RequestMapping选项来定义所需的功能。 Annotations Controller没有实现任何可以使用的接口。
答案 2 :(得分:0)
以下是使用路径映射的一个示例:
@RequestMapping(params = "formAction=APPROVE", method = RequestMethod.POST)
public String myMethod ()....
此方法只会在POST中被调用,其中有一个名为“formAction”的字段,其值为“APPROVE”。
答案 3 :(得分:0)
列出的其他答案适用于使用@RequestMapping注释的方法。
但是,如果你想在使用@InitBinder注释的方法上实现相同的功能,你可以简单地这样做:
@InitBinder
public void initBinder(HttpServletRequest request) {
if ("POST".equals(request.getMethod()){
//Do something
}
}