从Spring-mvc的RequestDataValueProcessor中检索表单方法

时间:2013-04-19 15:09:14

标签: spring-mvc

我想从<form:form>内部检索spring的RequestDataValueProcessor标记的http方法,以便根据它生成不同的隐藏字段。我可以访问表单操作,但似乎无法检索表单的http方法。

我正在使用Spring 3.2。

编辑:我添加了一个示例。

想象一下使用GET检索下面的表单。我想要的是阅读method标签的<form:form>参数,以便根据方法添加隐藏字段。显然,我不能使用request.getMethod(),因为这会返回原始请求的方法,而不是RequestDataValueProcessor处理的表单的方法。

<form:form action="/foo/bar" method="post" modelAttribute="${modelAttribute}" >
      <form:input path="myField" />
      <input id="proceed" type="submit" value="Save" />           
</form:form>

3 个答案:

答案 0 :(得分:0)

似乎有一个未决问题允许访问RequestDataValueProcessor中的表单方法。

问题是:https://jira.springsource.org/browse/SPR-10041

答案 1 :(得分:0)

绝对是Spring上的一个悬而未决的问题,但看起来不会很快得到解决。

这是你可以做的......虽然不是直截了当,所以在你开始之前权衡成本与收益:)

  1. RequestDataValueProcessor对你不起作用,你已经知道了。 FormTag的编程方式,在执行表单标记期间,它在特定时间从值处理器调用特定方法(挂钩)。

  2. 您可以创建自己的自定义表单标记,它将执行Spring的表单标记所做的所有操作,无论是通过组合还是继承。但此外,当标记检测到表单方法时,您可以调用自己的Value Processor esque类。然后,该类可以决定您要采取的其他步骤,然后您可以使用常规的ValueProcessor来添加隐藏的字段。

  3. 这些问题通过创建自己的标签来讨论如何扩展spring的标签:SpringMVC Custom Form TagsCreate a custom tag library which extends the Spring tag library

    另请查看FormTag https://github.com/SpringSource/spring-framework/blob/master/spring-webmvc/src/main/java/org/springframework/web/servlet/tags/form/FormTag.java的源代码。看看受保护的processAction方法如何调用值处理器钩子,你必须做类似的事情,但是在getMethod方法中。

    希望这个答案有意义,如果你想让我重新说明或阐述任何一点,请告诉我。 快乐的节目!

答案 2 :(得分:-1)

更多信息会有所帮助,例如您使用的是什么版本的Spring。

RequestDataValueProcessor的Spring 3.2 API文档中,我看到有四(4)种方法可以在其中工作。在每个中,您都可以访问HttpServletRequest

因此,您可以通过调用(link)来访问所有入站请求的HTTP方法:

request.getMethod()

这应该可以为您提供您正在寻找的内容。