1

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

3 回答 3

0

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

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

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

  2. 您可以创建自己的自定义表单标签,它将通过组合或继承完成 Spring 的表单标签所做的一切。但除此之外,当标签检测到表单方法时,您可以调用自己的 Value Processor 类。然后这个类可以决定你想要采取哪些额外的步骤,然后你可以使用常规的 ValueProcessor 添加你认为合适的隐藏字段。

这些问题讨论了如何通过创建自己的标签来扩展 spring 的标签:SpringMVC 自定义表单标签创建扩展 Spring 标签库的自定义标签库

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

希望这个答案有意义,如果您希望我重新措辞或详细说明任何观点,请告诉我。快乐编程!

于 2013-04-24T20:28:52.453 回答
0

似乎有一个悬而未决的问题允许访问RequestDataValueProcessor.

这就是问题所在:https ://jira.springsource.org/browse/SPR-10041

于 2013-04-24T09:38:56.390 回答
-1

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

从RequestDataValueProcessor的 Spring 3.2 API 文档中,我看到有四 (4) 种方法可供您使用。在每一个中,您都可以访问HttpServletRequest

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

request.getMethod()

这应该给你你正在寻找的东西。

于 2013-04-22T18:09:44.313 回答