问题标签 [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.
grails - Grails - 结合命令对象和子对象中的错误
我检查了Grails:如何将域对象的错误与命令对象的错误结合起来?,但由于某种原因,这些解决方案对我不起作用。它们可能仅适用于 Grails 1.3.7 而不是 Grails 2.2.1。
我有一个包含 InnerObjectCommand 列表的命令对象 OuterObjectCommand。我在控制器中手动填充它,然后调用 validate。在 OuterObjectCommand 上调用 validate() 似乎并未验证 InnerObjectCommand 列表,因此我分别验证了列表中的所有元素。我想要做的是将 InnerObjectCommand 对象和 OuterObjectCommand 对象的所有错误添加到 flash.errors 中。我怎样才能做到这一点?
grails - Grails将版本添加到命令对象会导致参数中的id和版本不被绑定
如果我在这里遗漏了一些非常明显的东西,我深表歉意,但我一直在努力解决这个问题。
我有一个命令对象:
我在我的控制器中绑定到这个:
在这种情况下一切都很好。现在我正在尝试添加版本字段,该字段在请求参数中传递给命令对象:
但是,现在当绑定发生时,id 和 version 始终为 null,即使它们存在于 params 对象中。
我怀疑可能对 id / version 属性进行了一些特殊处理,这些处理与 grails 如何处理乐观锁定有关(因为这最终是我这样做的原因),但问题存在于命令对象上,与任何域对象无关。
我很困惑为什么这不起作用。当命令对象上存在版本时,是否有一些特殊情况?
grails - 命令对象和hasmany
我在提交表单时尝试使用commandObject
来验证我的数据。我可以在commandObject
. 我的场景是这样的。
两个简单的classes
有很多关系:
commandObject
我想在提交表单时验证的 hasMany 很简单。
Ps:我知道这个commandObject是错误的,它不编译。但是我可以做这样的事情吗???
grails - 如何正确地将对象列表绑定到 Grails 命令中?
我试图弄清楚如何将 JSON 请求中的嵌套对象反序列化并验证为 Grails 2.1.1 命令对象。
目前我的控制器中有一个命令对象,它有一些基本属性,然后是域对象列表,
以及我的 POST 请求的 JSON 正文,
我看到使用空数组创建的命令对象。知道如何让 JSON 正文中的子对象反序列化为命令对象然后验证它们吗?
以前,我通过从参数映射手动创建一个对象并直接对其进行验证来解决这个问题,但这感觉像是一种没有利用 Grails 提供的所有功能的解决方法。
validation - 如何强制执行 Grails 命令对象已经过验证?
我们将以下通用模式用于 Grails 控制器和命令对象
显然,如果 co.validate() 没有被调用,.hasErrors() 将总是返回 false。有没有更好的方法来强制在应用层之间传递命令对象之前调用 .validate() ?我们不想传递无效的命令对象,但我们也不想强制每个新方法重新验证命令对象。
注意:我们没有使用默认的控制器/命令对象创建模式,因为我们需要做一些自定义参数映射检查,我们使用静态 valueOf 方法来创建命令对象。也欢迎改变这种做法的答案。
编辑:关于我们为什么不使用“默认”控制器/命令对象创建的更多信息。具体为什么我们不做..
我们要求禁止随机查询参数,例如。端点/对象?颜色=蓝色。为此,我们需要访问命令对象中的参数映射,以验证它不包含任何“意外”参数键。据我了解,默认方式只会在名为 color 的 CO 上创建一个成员,我看不出如何防止任意成员使用自定义验证器。我很乐意接受这样做的建议,从而允许我们使用这种默认方式。
validation - Grails 命令对象临时字段验证
我有一个用户注册表单,其中使用命令对象验证字段。其中一个字段是一个复选框,在继续注册之前必须选中它,并且它不会保存到域对象中。此复选框在命令对象中有一个对应的布尔字段。未选中复选框时,自定义验证器会引发验证错误。
问题是,这个错误没有在<g:renderErrors bean="${command}" as="xml"/>
块中传播(验证器被正确触发)。
命令对象:
验证器:
GSP 文件中的复选框:
这怎么可能解决?
grails - Grails 2.3.1 控制器参数处的命令对象数据绑定
我最近从 grails 2.2 升级到 2.3.1。我的控制器曾经以控制器参数将数据绑定到命令对象。在我升级到 2.3.1 后,绑定似乎不起作用并且出现“[致命错误]:-1:-1:文件过早结束。” 输出到控制台。
它在 2.2 上运行良好,就像这样 def home(ACommand cmd) {}
升级后,它会在进入动作之前输出“文件提前结束”并跳过动作方法并直接进入 home.gsp 视图。
我还尝试在操作中新建一个实例并使用 bindData(cmd, params)。当我逐步执行该操作时,bindData 方法产生了相同的消息,但可以继续并生成视图模型并传递给 home.gsp。
有谁碰巧知道可能导致问题的原因?谢谢。
grails - Grails CommandObject 验证何时应该失败
我的 Grails 2.2.3 应用程序中有以下命令对象。
这允许上传图片文件,并确保它在有效类型列表中。但是,问题是我可以上传不在该列表中的文件。当我打电话时cmd.validate()
我得到true
,然后我打电话cmd.hasErrors()
得到false
。我试过返回字符串'fileType.invalid'
和列表['fileType.invalid']
,但都不起作用。有没有人有任何想法?谢谢。
grails - Grails - 命令对象的专用源文件夹?
根据我的阅读,大多数人要么将命令对象放在控制器中(我不喜欢它),要么将它们放在 src/groovy 文件夹中的某个位置。
然而,我喜欢 Grails 如何为控制器、域、服务等提供特定的文件夹,并且认为简单地为命令对象创建一个新的源文件夹会很棒。/grails-app/commands 或者 /src/commands。以这种方式布局将有助于鼓励使用命令对象。
我有点担心这样做可能会破坏一些依赖于特定项目结构约定的 grails 魔法。在运行了一些快速测试之后,我确实验证了数据绑定和域约束导入似乎仍然可以正常工作。
对这种方法有任何想法或反对意见吗?
grails - Grails 命令对象和分页
我一直在更新我的一些控制器以使用命令对象,并开始制作 PaginateCommand 以供其他命令对象扩展。
子命令类
控制器
这一切都很好,我的控制器现在很好很简单。现在的问题是分页标签给我带来了问题。这是我最初认为可行的:
但是,分页标记仅查看附加到请求的大多数值的参数,而不是在 params 属性上传递的参数。我必须手动将这些变量作为上面的属性传递。
当所有的分页变量绑定到命令对象(我假设)时,它们似乎都从请求参数中删除了。我想将这些变量保留在命令对象中,这样我就不必将请求参数传递给我的服务。让控制器在渲染之前重新填充参数似乎也适得其反。
我是否不得不填充分页标记中的每个参数,还是我错过了另一种方式?
PS我正在使用Grails 2.3.6