当前位置: 首页 > 知识库问答 >
问题:

Spring表单标签中的模型属性和命令名称属性之间的区别?

郑声
2023-03-14

在Spring 3中,我在jsp的表单标签中看到了两种不同的属性

<form:form method="post" modelAttribute="login">

在这里,属性modelAttribute是表单对象的名称,其属性用于填充表单。我在发布表单时使用了它,在控制器中我使用了< code>@ModelAttribute来获取值,调用验证器,应用业务逻辑。这里一切都好。现在

<form:form method="post" commandName="login">

这个属性所期望的是什么,它是否也是我们要填充其属性的表单对象?

共有3个答案

陈欣荣
2023-03-14

不久前我也有同样的问题,我不记得确切的区别了,但是通过研究,我确定< code>commandName是旧的方法,在新的应用程序中,你应该使用< code>modelAttribute

柴宝
2023-03-14

旧方法=命令名称

...
<spring:url value="/manage/add.do" var="action" />
    <form:form action="${action}" commandName="employee">
        <div>
            <table>
....

新方式 = 模型属性

..
<spring:url value="/manage/add.do" var="action" />
    <form:form action="${action}" modelAttribute="employee">
        <div>
            <table>
..
柴英博
2023-03-14

如果您查看支持<code>的<code>FormTag</code>(4.3.x)的源代码

/**
 * Set the name of the form attribute in the model.
 * <p>May be a runtime expression.
 */
public void setModelAttribute(String modelAttribute) {
    this.modelAttribute = modelAttribute;
}

/**
 * Get the name of the form attribute in the model.
 */
protected String getModelAttribute() {
    return this.modelAttribute;
}

/**
 * Set the name of the form attribute in the model.
 * <p>May be a runtime expression.
 * @see #setModelAttribute
 */
public void setCommandName(String commandName) {
    this.modelAttribute = commandName;
}

/**
 * Get the name of the form attribute in the model.
 * @see #getModelAttribute
 */
protected String getCommandName() {
    return this.modelAttribute;
}

它们都指同一个领域,因此具有相同的效果。

但是,正如字段名所示,modelAttribute应该是首选,其他人也指出了这一点。

 类似资料:
  • 问题是我的控制器中有一个spring表单和两个具有相同属性的@ModelAttribute参数。表单的“commandName”参数设置为我的modelAttributes名称之一。令我惊讶的是,不仅将属性映射到用“commandName”指定的模型属性,还映射到第二个属性。 我还没有找到确切的解决方案,除了和我的相似之处:Spring-form多个表单具有相同的模型属性名称属性 但在我的例子中,

  • 问题内容: 对于“属性”和“属性”之间的区别,我通常感到困惑,并且找不到很好的资源来简洁地详细说明这些区别。 问题答案: 属性是一种特殊的属性。基本上,当Python遇到以下代码时: 它查找中,然后检查,看它是否有一个,或方法- 如果这样做,这是一个性质。如果它 是 一个属性,则不仅会返回该对象(就像对其他任何属性一样),还会调用该方法(因为我们一直在进行查找),并返回该方法返回的内容。 有关Py

  • 本文向大家介绍综合属性和继承属性之间的区别,包括了综合属性和继承属性之间的区别的使用技巧和注意事项,需要的朋友参考一下 合成属性和继承属性都是语言语义的一部分,该语言为其构造提供含义,例如标记和语法结构。语义有助于解释符号,符号的类型及其相互之间的关系,其分析可判断源程序中构造的语法结构是否衍生出任何含义。现在,基于属性的特征,我们可以区分综合属性和继承属性 以下是合成属性和继承属性之间的重要区别

  • 当我打开localhost:8080/customers/searchCustomer时,会引发异常: org.springframework.beans.NotReadable属性异常:bean类[java.lang.字符串]的无效属性ssn:Bean属性ssn不可读或具有无效的getter方法:getter的返回类型是否与setter的参数类型匹配? 我的接球手和二传手都很好。 我的实体: 在

  • 问题内容: 我是Swift的新手。计算属性和设置为闭包的属性之间有什么区别?我知道每次都会重新计算一个计算属性。封盖是否有所不同?即 关闭: 计算: 问题答案: 第一个是通过闭包初始化的存储属性。第二个是计算属性。 存储的属性的初始化关闭被调用一次,只有一次,但你可以改变存储的属性值(除非您更换同)。当您希望封装代码以在单个简洁的代码块中初始化存储的属性时,此功能很有用。 但是,每次引用变量时都会

  • 问题内容: 我有一个疑问,因为@Entity和@Table中都存在name属性 例如,允许名称属性具有相同的值 我也可以在同一班上使用不同的名字 谁能告诉我这两者之间有什么区别,为什么我们两者都具有相同的属性? 问题答案: DB 因此,在第一种情况下,表和实体将具有相同的名称,这将允许您在编写HQL或JPQL时以与实体相同的名称访问表。 在第二种情况下,编写查询时,您必须使用 @Entity中提供