Difference between modelAttribute and commandName attributes in form tag in spring?

后端 未结 5 1742
迷失自我
迷失自我 2020-12-07 10:42

In Spring 3, I have seen two different attribute in form tag in jsp


in this the

相关标签:
5条回答
  • 2020-12-07 11:12

    If you look at the source code of FormTag (4.3.x) which backs your <form> element, you'll notice this

    /**
     * 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;
    }
    

    They are both referring to the same field, thus having same effect.

    But, as the field name indicates, modelAttribute should be preferred, as others have also pointed out.

    0 讨论(0)
  • 2020-12-07 11:16

    commandName = name of a variable in the request scope or session scope that contains the information about this form,or this is model for this view. Tt should be a been.

    0 讨论(0)
  • 2020-12-07 11:22

    I had the same question a while ago, I can't remember the exact differences but from research I ascertained that commandName was the old way of doing it and in new applications you should be using modelAttribute

    0 讨论(0)
  • 2020-12-07 11:24

    OLD WAY = commandName

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

    NEW WAY = modelAttribute

    ..
    <spring:url value="/manage/add.do" var="action" />
        <form:form action="${action}" modelAttribute="employee">
            <div>
                <table>
    ..
    
    0 讨论(0)
  • 2020-12-07 11:24

    In xml based config, we will use command class to pass an object between controller and views. Now in annotation we are using modelattribute.

    0 讨论(0)
提交回复
热议问题