2014-10-16 38 views
0

我正在使用grails v2.3.3,并试图在两个操作中使用一组命令对象的实例。使用带有视图的命令对象链命令

在第一个操作中,我创建了一组命令对象实例,然后将其显示在要编辑的视图中。

然后,我使用视图中的链接将此数据提交给需要访问更新的命令对象实例集的同一控制器中的另一个操作。

我看了'链'命令,它使命令对象可以跨不同的动作访问,但它似乎提供了从一个动作到另一个动作的直接链接,没有显示视图和启用某个用户界面的选项。

我看不到如何通过视图实现这一点,以便更新这些命令对象实例的内容,然后发送到第二个要处理的动作。

我将命令对象设置为“会话”范围,并且很惊讶,默认情况下它无法通过控制器的所有操作访问 - 范围是什么意思?

-Mike

回答

0

这样做的正常方式是重新创建所述第二动作从形式发布数据的命令对象。这意味着视图的表单必须包含命令对象的所有字段,可以是可见(可编辑)或隐藏(传递)输入字段。如果您将它们作为参数添加到操作中,Grails命令对象绑定支持将自动填充新的命令对象。此外,您始终可以使用包含所有发布表单字段的“params”映射值手动构建新的命令对象实例。

有关详细信息和示例,请参阅“Grails手册中的命令对象和数据绑定”部分。

+0

我会给它一个。 – mikek 2014-10-17 13:14:09

+0

Steve Hole - 有一个复杂的问题,那就是第一个动作中的命令对象设置的内容由一个文件列表组成(来自html多个文件格式/输入标签的MultiPartfile类型,我很难引用这些文件在第二个动作中上传它们是否会以这种方式跨多个操作执行MultiPartFile请求(例如getFile())? – mikek 2014-10-17 13:57:28

+0

将此组命令对象(本例中为两个)传递给第二个动作I如果我将它们打印出来作为参数的一部分,我会得到:'flUp:[[email protected],[email protected]]'。如果我尝试重写它们作为原始命令对象在第二个动作中通过循环这两个对象:\t'(UploadFiles uP in params.flUp){}'。我得到一个GroovyCastException错误:**无法强制转换类'[email protected]' java.lang.Stri ng'到类'vidplay.UploadFiles'**。有什么建议么? -麦克风 – mikek 2014-10-20 10:54:01