[英]Submitting multiple grails domain objects at once
我有一个表单,用户可以在其中输入许多相同域类的记录。 这些记录中的每一个都应在提交后进行验证。 如果验证成功,则应将记录的集合传递到另一个视图,否则,应在同一视图中显示验证错误,以保留先前输入的值。 验证应使用专用命令对象完成。
为了获得更好的图像,窗体大致如下所示:
我想出了一种解决方案,将每个记录映射到一个表单(从呈现视图的初始操作返回项目列表):
<g:each in="${items}" var="item">
<g:render template="orderItem" model="[item: item]"/>
</g:each>
和模板:
<form>
...
<g:textField value="${item.url}" name="url"></g:textField>
...
</form>
但是我不确定这种方法的正确性。
实施此方案时,我面临一些挑战:
提前致谢。
您可以使用命令对象来实现 。 它们是可以处理域实例列表的可验证对象。 例:
import org.apache.commons.collections.ListUtils
import org.apache.commons.collections.Factory
@Validateable
class ItemsCommand {
List<Item> items = ListUtils.lazyList([], {new Item()} as Factory)
}
在您看来,您只需要一种表格。 创建字段时,请使用如下索引:
<g:each in="${command.items}" var="item" status="i">
<g:textField name="items[$i].url" value="${item.url}" />
...
</g:each>
//this is the submit action, the command will have the Item
//instances though Data Binding.
def myAction(ItemsCommand command) {
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.