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
.