방금 수년간 Spring MVC에서 온 Django와 함께 작업하기 시작했으며 양식 구현이 약간 미친 것으로 나타났습니다. 익숙하지 않은 경우 Django 양식 은 필드를 정의하는 양식 모델 클래스로 시작합니다. 스프링도 폼 백업 객체로 시작합니다. 그러나 Spring이 JSP 내의 지원 객체에 양식 요소를 바인딩하기 위해 taglib 을 제공하는 경우 Django는 모델에 직접 연결된 양식 위젯을 가지고 있습니다. 필드에 스타일 속성을 추가하여 CSS를 적용하거나 완전히 사용자 정의 위젯을 새 클래스로 정의 할 수있는 기본 위젯이 있습니다. 그것은 모두 파이썬 코드에 들어갑니다. 그것은 나에게 견과류처럼 보인다. 먼저 뷰에 대한 정보를 모델에 직접 넣고 두 번째로 모델을 특정 뷰에 바인딩합니다. 뭔가 빠졌습니까?
편집 : 요청 된 일부 예제 코드.
장고 :
# Class defines the data associated with this form
class CommentForm(forms.Form):
# name is CharField and the argument tells Django to use a <input type="text">
# and add the CSS class "special" as an attribute. The kind of thing that should
# go in a template
name = forms.CharField(
widget=forms.TextInput(attrs={'class':'special'}))
url = forms.URLField()
# Again, comment is <input type="text" size="40" /> even though input box size
# is a visual design constraint and not tied to the data model
comment = forms.CharField(
widget=forms.TextInput(attrs={'size':'40'}))
스프링 MVC :
public class User {
// Form class in this case is a POJO, passed to the template in the controller
private String firstName;
private String lastName;
get/setWhatever() {}
}
<!-- JSP code references an instance of type User with custom tags -->
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<!-- "user" is the name assigned to a User instance -->
<form:form commandName="user">
<table>
<tr>
<td>First Name:</td>
<!-- "path" attribute sets the name field and binds to object on backend -->
<td><form:input path="firstName" class="special" /></td>
</tr>
<tr>
<td>Last Name:</td>
<td><form:input path="lastName" size="40" /></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="Save Changes" />
</td>
</tr>
</table>
</form:form>