问题标签 [command-objects]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
809 浏览

grails - grails @BindUsing 命令对象

我正在使用 grails 2.5.5,问题是当我使用命令对象时,我想更改使用 @BindUsing 注释获得的数据格式。

BindUsing 闭包永远不会被执行。问题是什么以及如何解决?

编辑: 要明确:问题是数据从格式更改,从地图列表变为长列表。有没有办法用 BindUsing 来做到这一点,还是我每次都必须在控制器中做到这一点?

0 投票
1 回答
55 浏览

grails - 在 GRAILS 中创建与其他类型对象不同类型的对象时需要建议如何使用服务

这个例子是关于从客户那里收到一个请求,卖家可以选择向客户提供报价。

请求存储在名为“Request”的类中,而报价存储在“Offer”类中。

流程是:

  1. 卖家从请求列表中获取请求并被重定向到 Request.show-form。

  2. 在这里,他可以通过链接选择使用此请求中的数据创建报价。

  3. 现在,卖家被重定向到 Offer.Create-form,其中填充了来自请求的数据。

  4. 卖家现在可以添加和/或更改数据以及确认或取消此报价。

而已。

我的想法是,请求控制器在收到操作后,将获取请求的 ID,然后调用服务 Offer_service,该服务又使用 ID 读取请求,然后创建一个新的 Offer 对象。服务继续用来自请求对象的数据填充这个对象,然后调用报价控制器打开创建表单,让卖方完成报价。

我想知道我是否走在正确的道路上,或者我是否错过了什么?

当然,这对你来说很简单,有经验的人,但对我来说……我是新人,有时感觉就像在深水中一样。我会很感激每一种可以引导我前进的建议、技巧等。

修正.. 你看,我们希望保持请求和报价彼此独立,如果卖家想要更改请求中的某些值,他将只更改报价。请求中的值应保持不变. 此外,报价的 id 应该存储在请求中,以便您可以根据需要直接从请求表单跳转到报价。反之亦然,请求的 id 应存储在要约中,以便可以返回请求。但是只有在保存(确认)报价时才应设置这些链接(id:s)。在将请求数据存储在报价中之前,还可能对请求数据进行更多处理。也可以在没有请求的情况下构建报价,然后没有与请求的连接。这就是为什么我认为服务应该很好地保持请求和提供彼此独立。

0 投票
1 回答
445 浏览

unit-testing - Grails 使用命令对象对方法进行单元测试

我的单元测试有问题。这是我的单元测试:

这是我从终端得到的结果:

我似乎无法弄清楚为什么我对该特定方法的单元测试一直失败。也许我的命令对象模拟是关键?提前致谢。

编辑:条件应该是'response.redirectedUrl ==“/role/index”',我只是复制了错误的消息,因为我当时正在摆弄代码。

编辑:这是控制器方法:

0 投票
2 回答
257 浏览

spring - 圣杯。用里面的spring bean测试命令对象

我在自定义验证器中有一个带有约束的命令对象:

但是在单元测试中调用new UserPasswordCommand(...)时,我得到以下信息:

java.lang.NullPointerException:无法在空对象上获取属性“currentUser”

所以看起来 springSecurityService = null (如预期的那样)。我尝试了不同的动作来模拟或“元类”它,但没有成功。

请告知是否有更好的方法在命令对象中使用来自 applicationContext 的 bean 或在 Holders.applicationContext 中模拟 bean 的一些方法。

提前致谢!

更新

将以下内容放置到setup()部分:

但是没有效果。springSecurityService在从Holders检索到的applicationContext中为。我究竟做错了什么?

0 投票
1 回答
131 浏览

validation - Groovy 2.4.4 命令对象 - 重用验证器闭包

假设我有以下命令:

假设我想对任何 URL 字段执行一些常见的验证(例如,检查是否允许该域)。将这个常见的验证代码分解成一个单独的函数而不是在每个验证闭包中放置相同的块的语法是什么?

0 投票
2 回答
584 浏览

grails - Grails 控制器操作抽象命令对象参数

是否支持在控制器操作参数中使用抽象命令对象?然后根据 JSON 请求中的给定参数,它会选择正确的命令对象吗?

例如:

到目前为止,我一直在使用request.JSON来检测传入的参数并实例化正确的 Command 对象。这是我处理这种情况的唯一选择吗?

编辑 :

在这里澄清用例。我有两个共享相同基类域模型的域模型,并且我正在使用默认table-per-hierarchy模型对数据库中的继承进行建模。

在我的例子中,其中一个子域模型Model A需要一个名为 的不可空字符串body,即一个文本条目,而另一个 Model B需要一个名为 的不可空字符串directUrl。这些代表可以在平台上发布的公告。Model A是一个包含公告正文的写入条目,而Model B表示指向包含实际公告的第三方站点的链接。

在这些场景中,我传统上会在控制器操作中放置一个 if 语句来确定要实例化哪个相关命令对象,但我希望有一个更简洁的方法。

0 投票
2 回答
592 浏览

validation - 验证命令对象中的嵌套域类实例

我尝试验证命令对象上的嵌套域类实例。

具有以下命令对象

并且具有以下具有自己的约束的域类

当刷新不可为空时,我需要命令对象验证日期属性并检查刷新实例中的相应限制

现在尝试在控制器中使用此代码:

在这里,!command.refreshment.validate()我尝试验证刷新实例,但我得到的结果是没有错误,即使传递不正确的数据也是如此。

感谢您的任何指导,并感谢您的时间

0 投票
0 回答
195 浏览

grails - 使用命令对象参数在控制器操作中导致 groovy.lang.MissingPropertyException 的 transactionStatus

我有一个事务控制器,里面有两个操作,编辑和更新。更新操作有一个命令对象参数。如果我在更新操作中调用 transactionStatus.setRollbackOnly(),我会得到 transactionStatus 的 MissingPropertyException。当我有 action 参数时,transactionStatus 不会被注入。同一控制器中的编辑操作(没有任何参数)可以访问 transactionStatus 属性。如果我从有问题的操作中删除参数,则 transactionStatus 变得可用。我想保留参数并在出现错误时能够回滚。
我使用 grailsVersion=3.2.7。这是我的控制器的外观:

PS我想用“grails-transactional”标记问题,但它尚未创建。

0 投票
1 回答
167 浏览

grails - Grails 命令对象是否支持多个 MultipartFile?

我想在 Grails 应用程序中存储多个图像。因此,grail 的命令对象支持多个 MultipartFile 文件。

0 投票
3 回答
828 浏览

grails - 如何将 id 列表绑定到 grails 中的命令对象?

假设当您提交表单时,它会发送一个 id 列表。

在控制器端

我想将传递给控制器​​的所有 id 绑定到 EmailCommand 命令对象中的 ids 列表。我怎样才能实现它?我很感激任何帮助!谢谢!