Есть ли эквивалент Grails для тегов формы jsp? - PullRequest
0 голосов
/ 28 июля 2011

У меня есть (пока что) простое веб-приложение 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}"/>
  1. Я не могу указать атрибут «путь»: я должен вручную сгенерировать имя. Когда путь становится сложным (скажем, свойство элемента из списка), он может стать волосатым и шумным.
  2. Я не могу автоматически указывать классы CSS "normal" и "error": я должен поместить EL в атрибут класса <input>. Грязный!

Должен признать, я удивлен, что GSP (то, что я считаю) стоит за Spring, я думал, что все это делается для того, чтобы сделать очевидные вещи простыми, а сложные - возможными. Легко читаемые / внедряемые формы кажутся простыми.

Итак, мои вопросы: -

  1. я что-то упустил?
  2. я должен (и могу ли я) использовать spring-form.tld в моем GSP?

Это заставляет меня задуматься, с какими еще гочами я столкнусь ...

1 Ответ

1 голос
/ 28 июля 2011

Плагин beanFields делает все, что делают теги Spring, и многое другое. Это делает работу с формами максимально лаконичной.

...