[forms] Spring의 양식 태그에서 modelAttribute와 commandName 속성의 차이점은 무엇입니까?

Spring 3에서는 jsp의 양식 태그에서 두 가지 다른 속성을 보았습니다.

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

여기에서 modelAttribute 속성은 속성이 양식을 채우는 데 사용되는 양식 객체의 이름입니다. 그리고 양식을 게시하는 데 사용했고 컨트롤러에서 @ModelAttribute값을 캡처하고 유효성 검사기를 호출하고 비즈니스 논리를 적용하는 데 사용 했습니다. 여기 모든 것이 좋습니다. 지금

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

이 속성에서 기대하는 것은 무엇입니까? 또한 속성을 채울 양식 객체입니까?



답변

요소 를 뒷받침하는 (4.3.x)소스 코드FormTag 를 살펴보면<form>

/**
 * 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수 있듯이 다른 사람들도 지적했듯이 선호되어야합니다.


답변

예전 = commandName

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

새로운 방법 = modelAttribute

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


답변

얼마 전에 같은 질문을했는데 정확한 차이점은 기억 나지 않지만 연구를 통해 확인했습니다. commandName 를 통해 그것이 오래된 방법이며 새로운 응용 프로그램에서 사용해야한다는 것을 확인했습니다.modelAttribute


답변

commandName =이 양식에 대한 정보를 포함하는 요청 범위 또는 세션 범위의 변수 이름 또는이보기의 모델입니다. Tt는 있어야합니다.


답변

xml 기반 구성에서는 명령 클래스를 사용하여 컨트롤러와 뷰간에 개체를 전달합니다. 이제 주석에서 우리는 modelattribute.


답변