【发布时间】:2011-10-15 00:12:00
【问题描述】:
我有一个(目前)使用 JSP 作为视图技术的简单 Spring 3 MVC Web 应用程序。在我走得太远之前,我正在考虑在 Grails 中重写它。
我喜欢 Spring 的一件事是 spring-form.tld 标签库中提供的“表单”标签。给定具有“myProperty”属性的模型属性“myFormModel”,这使我可以编写如下内容:-
<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 类:我必须将 EL 放入
<input>类属性中。乱七八糟!
我必须承认我很惊讶 GSP(我认为)落后于 Spring,我认为这一切都是为了让显而易见的事情变得简单,让困难的事情成为可能。易于阅读/实施的表单似乎很容易。
所以,我的问题:-
- 我错过了什么吗?
- 我应该(并且可以)在我的 GSP 中使用 spring-form.tld 吗?
这让我想知道我还会遇到什么其他问题......
【问题讨论】:
-
This question 涵盖相同的领域。还有Bean Fields plugin 或Form Helper plugin 地址中的一些(表单助手看起来更接近你想要的)。