У меня есть (пока что) простое веб-приложение Spring 3 MVC, использующее JSP в качестве технологии просмотра. Я подумываю переписать его в Grails, пока не зашел слишком далеко.
Одна вещь, которая мне нравится в Spring, это теги "form", предоставляемые в библиотеке тегов spring-form.tld. Учитывая свойство модели "myFormModel" со свойством "myProperty", это позволяет мне написать что-то вроде: -
<form:form commandName="myFormModel">
<form:input path="myProperty" cssErrorClass="error"/>
Ключевым моментом здесь является то, что тег form: input автоматически выполняет всю привязку к свойству в объекте команды, создавая (примерно) в HTML: -
<form>
<input type="text" name="myProperty" value="xyz"/>
Spring MVC свяжет параметры формы с классом и передаст объект в контроллер. Меньше ошибаться.
(Прошу прощения за JSP и HTML, это ориентировочно, возможно, немного неверно)
Как я понимаю теги формы GSP: -
<g:form name="myForm" url="[controller:'myController', action:'foo']">
<g:textField value="${myFormModel.myProperty}" class="${...blah to select error}"/>
- Я не могу указать атрибут «путь»: я должен вручную сгенерировать имя. Когда путь становится сложным (скажем, свойство элемента из списка), он может стать волосатым и шумным.
- Я не могу автоматически указывать классы CSS "normal" и "error": я должен поместить EL в атрибут класса
<input>
. Грязный!
Должен признать, я удивлен, что GSP (то, что я считаю) стоит за Spring, я думал, что все это делается для того, чтобы сделать очевидные вещи простыми, а сложные - возможными. Легко читаемые / внедряемые формы кажутся простыми.
Итак, мои вопросы: -
- я что-то упустил?
- я должен (и могу ли я) использовать spring-form.tld в моем GSP?
Это заставляет меня задуматься, с какими еще гочами я столкнусь ...