<form:form 有方法 GET 或 POST

use*_*693 2 spring spring-mvc spring-form

这可能是一个非常基本的问题,但我很困惑。我有几个疑问:

  1. 在 spring 形式中,<form:form如果未指定方法,那么它是 GET 还是 POST?
  2. 如果弹簧形式具有<form:formcommandName 那么是 GET 还是 POST?

第二个问题是因为我在代码中看到“form:form commandName=xyz action=abc” 当我检查 HTML 代码(查看源代码)时,它会转换为“form action=abc method=POST”

请帮我解决一下这个。

kam*_*mil 5

form没有指定动作的HTML总是 GET。这是 HTML 标准。 http://www.w3.org/TR/html401/interact/forms.html#h-17.3

但是当您查看FormTagSpring 源代码时,您会注意到以下代码:

public class FormTag extends AbstractHtmlElementTag {

/** The default HTTP method using which form values are sent to the server: "post" */
private static final String DEFAULT_METHOD = "post";
Run Code Online (Sandbox Code Playgroud)

所以对于 spring 标签<form:form操作默认是发布的。

commandName只是与您的表单绑定的模型属性的名称。它与方法类型无关。此外,它等效于modelAttribute因此您可以使用任何一个。