Bahar MVC yıllarından gelen Django ile çalışmaya başladım ve form uygulama grevleri biraz çılgınca. Eğer aşina değilseniz, Django formları alanlarınızı tanımlayan bir form modeli sınıfıyla başlar. Bahar da benzer şekilde form destekli bir nesne ile başlar. Ancak Spring, JSP'nizdeki destek nesnesine form öğelerini bağlamak için bir taglib sağlarsa , Django'nun doğrudan modele bağlı form widget'ları vardır. CSS uygulamak veya tamamen özel widget'ları yeni sınıflar olarak tanımlamak için alanlarınıza stil nitelikleri ekleyebileceğiniz varsayılan widget'lar vardır. Her şey python kodunuza giriyor. Bana deli gibi geliyor. İlk olarak, görünümünüzle ilgili bilgileri doğrudan modelinize koyuyorsunuz ve ikinci olarak modelinizi belirli bir görünüme bağlıyorsunuz. Bir şey mi kaçırıyorum?
EDIT: Bazı örnek kod istendiği gibi.
Django:
# 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'}))
Bahar 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>