问题标签 [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:命令对象、视图模式和条件表单字段?
我正在尝试正确使用命令对象。我有一些问题。
给定一个通用域,例如:
然后,考虑以下Ticket 形式的规则:
- 客户只能在创建时选择。在编辑时,不能显示选择,而是显示标签;
- 产品只能在创建时选择。然而,在编辑时,选择必须显示为 disabled;
- 可以在创建或编辑时选择缺陷;
- 无论如何都不能以这种形式设置解决方案。
- 评论只能由具有特定角色的用户通知(例如使用 SpringSecurity)。如果用户没有这样的角色,则文本区域必须显示为禁用。
现在,我想知道的是:
使用 CommandObject 处理这种情况的最佳方法是什么?
- 1 个单一的 CommandObject 用于两个操作?
- 1 个特定于每个操作的 CommandObject?
- 在单个 CommandObject 的情况下,如何防止用户入侵程序,例如传递禁止的参数?
实施表格规则的最佳方法是什么?也就是说,在每种情况下显示/启用/禁用哪个字段。
- 这种情况有什么模式或建议吗?
- 这些规则是否应该以实际形式编写?
- 或者表格应该“问”某人吗?也许是 CommandObject?还是域实例本身?
例如,考虑这个表单的要点:
在这种情况下,没有太大问题,因为检查相当简单。那是:
但是,考虑一个更复杂的规则。就像是:
等等。
现在,这种方法存在一些问题:
- 它相当冗长,因此容易出错。
- 假设这样的规则在其他领域之间共享。在这种情况下,我必须以某种方式管理它(局部变量、复制代码等)。
- 另外,为此,我需要在我的 TicketCommand 中有一个属性“Id”,我不知道这是否是个好主意。
因此,我想知道是否有任何模式或建议可用于改进这些场景。也就是说,可以封装这种复杂性的东西。例如:
CommandObject 可能是这样的:
还有一个用于编辑的 CommandObject:
CommndObject 可以承担这样的责任吗?如果没有,还有其他更好的方法来集中这些复杂性吗?另外,正如我之前所说,物业客户无法设置更新。如何处理?
嗯,我想这差不多。
我很感激任何意见和建议。一些教程的任何链接也会很棒。
PS: 想看的朋友可以在github上找到完整的项目。
grails - Grails 2.5.0 - 约束为空白或遵循验证
我想做类似的事情:
其中数据要么为空白,要么遵循验证(例如,如果它不为空白,则为大小约束)。如果没有自定义验证,这可能吗?
mysql - asp命令对象在参数上执行错误,包括编码
我正在使用命令对象运行查询,但在执行查询时遇到意外错误,我需要一些帮助。
相同的代码似乎只在上面几行工作,并且似乎仅在我将原始 db 表替换为 -dev 副本表后才出现。
代码如下:
这运行良好,我存储了一些结果。然后我在下一行使用相同的参数运行另一个查询:
产生错误:
我希望有人能指出正确的方向,为什么现在可能会显示并将编码扔给参数。我以前见过这个并设法找到解决方法,但我一生都记不起来怎么做的。
非常感谢所有帮助。非常感谢,JB
grails - Grail : GSP Input parameter name in case of nested list in grails command object
I am using grails 2.5 , my command object is
#xA;In my GSP
#xA;In my controller I am getting empty list.
Not sure how to rename the input box name so that I can get the concrete list of objects.
Thanks in advance.
grails - Grails 表单重定向/渲染的最佳实践
如果我有一个操作def formPage()
,我希望能够将表单保存在该页面上,如果出现错误,则显示带有先前输入的值的表单,如果成功则显示空白表单。
formPage
我的问题是:调用类似的东西是最佳做法saveFormPage(FormPageCommand fpc)
吗?然后可以使用或不使用先前输入的值saveFormPage
进行渲染。formPage
这种方法的问题在于,用户可以单击地址栏,按回车键,然后由于表单尚未填写而出现大量错误,并且命令对象会看到所有空值或空白值。
另一种方法可能是只有一个def formPage(FormPageCommand fpc)
, 并忽略错误,如果没有填写任何值,则只显示一个空白表单。
如果没有填写任何值,也可以调用saveFormPage(FormPageCommand fpc)
并重定向回。formPage()
这里的最佳做法是什么?
grails - Grails 2.5.0 - 命令对象使用 JSON 处理 POST 请求
我设置了一个表单来向 Grails 控制器发送 POST 请求,该控制器使用命令对象作为其一个参数。命令对象包含一些正确绑定的属性以及未正确绑定的项目列表。我正在做的是通常通过 POST 请求发送其他参数,但将列表包装为 JSON 字符串,因为我不确定通过 POST 发送列表的另一种方式(例如,XML 字符串) . 让命令对象从字符串中正确绑定列表的最后一步是什么,或者有没有更好的方法将列表发送到命令对象?
编辑:这是一个简化版本:
测试 URI:
命令对象:
表格:
grails - 命令对象仅在控制器中还是可以传递给服务层?
在 Grails 框架中,我看到了命令对象模式,但它的使用对我来说不是很清楚。此外,Grails 文档给出的大多数示例都是关于域类而不是命令对象(可能是为了简化代码示例)。
1 - 命令对象是视图和控制器层之间使用的东西,必须留在那里?
2-或者将命令对象传递给服务层是一种好习惯吗?
为了说明第 2 点:
如果第 2 点是一个不好的做法,那么如何将提交的数据传递给服务层?通过域类? 编辑:似乎没问题
[编辑]
如果我使用命令对象而不是域类在这种情况下该怎么办:
如果用户服务事务结束时发生数据库突袭的异常(因为刷新数据不遵守模式约束),会发生什么?
在我看来,问题在于有两个查询:
首先 - 例如,当调用 cmd.hasErrors() 时,会持续调用电子邮件的唯一约束
其次 - 当服务事务结束时,会刷新数据库(在我的情况下会导致一个 SQL 插入),并且可能会在具有唯一约束的列电子邮件上引发异常
测试 cmd.hasErrors() 并不能防止 DB 引发违反约束唯一异常的情况,或者我错了?
grails - Grails:您可以将创建/保存与命令对象一起使用吗?
在我查看过的所有关于 Grails 命令对象的示例中,作者在他们的控制器中使用新的操作名称(例如,“login”、“register”)而不是“create”或“save”。
使用命令对象处理表单数据是否排除了在控制器中使用“create”和“save”作为函数名称?如果是,是不是因为这些动作假定使用域对象而不是命令对象?
(背景:在 CO 验证失败后试图让表单重新填充是纯粹的痛苦。)
angularjs - Grails/Angular $http() 不绑定命令对象
我们目前正在努力将我们的项目从 Grails 2.2 升级到 Grails 3.0,并且遇到了许多问题。我目前正在处理的问题与 Angular $http() 和命令对象没有正确数据绑定有关。
我们目前让 Grails 在 Controller 方法中绑定所有的 Command 对象。这是在任何地方完成的,手动绑定所有内容将是很多工作(我现在唯一能想到的解决方案)。我们知道我们最终需要这样做(更多控制。Grails 经常错误地绑定),但除非被迫这样做,否则我们宁愿不这样做。
我们之前的解决方案涉及一个拦截器,如果 params 中没有值,它将获取 request.JSON 字段并将它们转储到 params 中。
在 Grails 3.0 中,拦截器现在是在控制器之外单独定义的,所以我创建了以下内容来复制我们之前的内容。
不幸的是,这似乎不像以前那样在 Grails 3.0 中工作。虽然这些值似乎在“参数”上正确映射,但命令对象将所有内容都设置为空。我只能假设在拦截器运行之前“创建”命令对象。命令对象从我们的 $.ajax() 调用中正确绑定,因为这些值被设置为 params 而不是 request.JSON。
有没有办法以某种方式让拦截器中创建的命令对象手动设置它,或者是否有人对解决方案有任何其他想法?
编辑:$http() 角度调用示例
grails - Grails - 命令对象,服务方法
我不是一个精通编程的人,所以请多多包涵。
我已阅读有关命令对象的博客条目和文档。我从来没有用过它,我想知道我是否应该。(我可能应该...)
我的项目需要在用户上传文件时进行解析、排序、计算并将结果保存到数据库中。
因此,根据我阅读的一篇博客文章及其相应的github 代码,
1)SERVICE
应该接收文件上传,解析上传的文件(主要是docs和pdfs),使用RegEx对解析后的数据进行排序,并计算数据,
2)COMMAND OBJECT
应该调用SERVICE
,收集结果并将结果发送回控制器,并将结果保存到数据库中,
3)CONTROLLER
应该从 接收请求,从VIEW
获取结果COMMAND OBJECT
,然后将结果发送回VIEW
。
我理解正确吗?
谢谢。