我想从<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>
答案 0 :(得分:0)
似乎有一个未决问题允许访问RequestDataValueProcessor
中的表单方法。
答案 1 :(得分:0)
绝对是Spring上的一个悬而未决的问题,但看起来不会很快得到解决。
这是你可以做的......虽然不是直截了当,所以在你开始之前权衡成本与收益:)
RequestDataValueProcessor
对你不起作用,你已经知道了。 FormTag
的编程方式,在执行表单标记期间,它在特定时间从值处理器调用特定方法(挂钩)。
您可以创建自己的自定义表单标记,它将执行Spring的表单标记所做的所有操作,无论是通过组合还是继承。但此外,当标记检测到表单方法时,您可以调用自己的Value Processor esque类。然后,该类可以决定您要采取的其他步骤,然后您可以使用常规的ValueProcessor来添加隐藏的字段。
这些问题通过创建自己的标签来讨论如何扩展spring的标签:SpringMVC Custom Form Tags和Create 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()
这应该可以为您提供您正在寻找的内容。