问题标签 [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 投票
1 回答
338 浏览

grails - Grails:命令对象、视图模式和条件表单字段?

我正在尝试正确使用命令对象。我有一些问题。

给定一个通用域,例如:

然后,考虑以下Ticket 形式规则

  • 客户只能在创建时选择。在编辑时,不能显示选择,而是显示标签;
  • 产品只能在创建时选择。然而,在编辑时,选择必须显示为 disabled
  • 可以在创建或编辑时选择缺陷;
  • 无论如何都不能以这种形式设置解决方案。
  • 评论只能由具有特定角色的用户通知(例如使用 SpringSecurity)。如果用户没有这样的角色,则文本区域必须显示为禁用。

现在,我想知道的是:

  1. 使用 CommandObject 处理这种情况的最佳方法是什么?

    • 1 个单一的 CommandObject 用于两个操作?
    • 1 个特定于每个操作的 CommandObject?
    • 在单个 CommandObject 的情况下,如何防止用户入侵程序,例如传递禁止的参数?
  2. 实施表格规则的最佳方法是什么?也就是说,在每种情况下显示/启用/禁用哪个字段。

    • 这种情况有什么模式或建议吗?
    • 这些规则是否应该以实际形式编写?
    • 或者表格应该“问”某人吗?也许是 CommandObject?还是域实例本身?

例如,考虑这个表单的要点:

在这种情况下,没有太大问题,因为检查相当简单。那是:

但是,考虑一个更复杂的规则。就像是:

等等。

现在,这种方法存在一些问题:

  • 它相当冗长,因此容易出错。
  • 假设这样的规则在其他领域之间共享。在这种情况下,我必须以某种方式管理它(局部变量、复制代码等)。
  • 另外,为此,我需要在我的 TicketCommand 中有一个属性“Id”,我不知道这是否是个好主意。

因此,我想知道是否有任何模式或建议可用于改进这些场景。也就是说,可以封装这种复杂性的东西。例如:

CommandObject 可能是这样的:

还有一个用于编辑的 CommandObject:

CommndObject 可以承担这样的责任吗?如果没有,还有其他更好的方法来集中这些复杂性吗?另外,正如我之前所说,物业客户无法设置更新。如何处理?

嗯,我想这差不多。

我很感激任何意见和建议。一些教程的任何链接也会很棒。

PS: 想看的朋友可以在github上找到完整的项目。

0 投票
1 回答
101 浏览

grails - Grails 2.5.0 - 约束为空白或遵循验证

我想做类似的事情:

其中数据要么为空白,要么遵循验证(例如,如果它不为空白,则为大小约束)。如果没有自定义验证,这可能吗?

0 投票
1 回答
141 浏览

mysql - asp命令对象在参数上执行错误,包括编码

我正在使用命令对象运行查询,但在执行查询时遇到意外错误,我需要一些帮助。

相同的代码似乎只在上面几行工作,并且似乎仅在我将原始 db 表替换为 -dev 副本表后才出现。

代码如下:

这运行良好,我存储了一些结果。然后我在下一行使用相同的参数运行另一个查询:

产生错误:

我希望有人能指出正确的方向,为什么现在可能会显示并将编码扔给参数。我以前见过这个并设法找到解决方法,但我一生都记不起来怎么做的。

非常感谢所有帮助。非常感谢,JB

0 投票
0 回答
273 浏览

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.

0 投票
3 回答
390 浏览

grails - Grails 表单重定向/渲染的最佳实践

如果我有一个操作def formPage(),我希望能够将表单保存在该页面上,如果出现错误,则显示带有先前输入的值的表单,如果成功则显示空白表单。

formPage我的问题是:调用类似的东西是最佳做法saveFormPage(FormPageCommand fpc)吗?然后可以使用或不使用先前输入的值saveFormPage进行渲染。formPage这种方法的问题在于,用户可以单击地址栏,按回车键,然后由于表单尚未填写而出现大量错误,并且命令对象会看到所有空值或空白值。

另一种方法可能是只有一个def formPage(FormPageCommand fpc), 并忽略错误,如果没有填写任何值,则只显示一个空白表单。

如果没有填写任何值,也可以调用saveFormPage(FormPageCommand fpc)并重定向回。formPage()

这里的最佳做法是什么?

0 投票
1 回答
353 浏览

grails - Grails 2.5.0 - 命令对象使用 JSON 处理 POST 请求

我设置了一个表单来向 Grails 控制器发送 POST 请求,该控制器使用命令对象作为其一个参数。命令对象包含一些正确绑定的属性以及未正确绑定的项目列表。我正在做的是通常通过 POST 请求发送其他参数,但将列表包装为 JSON 字符串,因为我不确定通过 POST 发送列表的另一种方式(例如,XML 字符串) . 让命令对象从字符串中正确绑定列表的最后一步是什么,或者有没有更好的方法将列表发送到命令对象?

编辑:这是一个简化版本:

测试 URI:

命令对象:

表格:

0 投票
2 回答
1061 浏览

grails - 命令对象仅在控制器中还是可以传递给服务层?

在 Grails 框架中,我看到了命令对象模式,但它的使用对我来说不是很清楚。此外,Grails 文档给出的大多数示例都是关于域类而不是命令对象(可能是为了简化代码示例)。

1 - 命令对象是视图和控制器层之间使用的东西,必须留在那里?

2-或者将命令对象传递给服务层是一种好习惯吗?

为了说明第 2 点:

如果第 2 点是一个不好的做法,那么如何将提交的数据传递给服务层?通过域类? 编辑:似乎没问题

[编辑]

如果我使用命令对象而不是域类在这种情况下该怎么办:

如果用户服务事务结束时发生数据库突袭的异常(因为刷新数据不遵守模式约束),会发生什么?

在我看来,问题在于有两个查询:

首先 - 例如,当调用 cmd.hasErrors() 时,会持续调用电子邮件的唯一约束

其次 - 当服务事务结束时,会刷新数据库(在我的情况下会导致一个 SQL 插入),并且可能会在具有唯一约束的列电子邮件上引发异常

测试 cmd.hasErrors() 并不能防止 DB 引发违反约束唯一异常的情况,或者我错了?

0 投票
1 回答
189 浏览

grails - Grails:您可以将创建/保存与命令对象一起使用吗?

在我查看过的所有关于 Grails 命令对象的示例中,作者在他们的控制器中使用新的操作名称(例如,“login”、“register”)而不是“create”或“save”。

使用命令对象处理表单数据是否排除了在控制器中使用“create”和“save”作为函数名称?如果是,是不是因为这些动作假定使用域对象而不是命令对象?

(背景:在 CO 验证失败后试图让表单重新填充是纯粹的痛苦。)

0 投票
0 回答
109 浏览

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() 角度调用示例

0 投票
3 回答
2091 浏览

grails - Grails - 命令对象,服务方法

我不是一个精通编程的人,所以请多多包涵。

我已阅读有关命令对象的博客条目和文档。我从来没有用过它,我想知道我是否应该。(我可能应该...)

我的项目需要在用户上传文件时进行解析、排序、计算并将结果保存到数据库中。

因此,根据我阅读的一篇博客文章及其相应的github 代码

1)SERVICE应该接收文件上传,解析上传的文件(主要是docs和pdfs),使用RegEx对解析后的数据进行排序,并计算数据,

2)COMMAND OBJECT应该调用SERVICE,收集结果并将结果发送回控制器,并将结果保存到数据库中,

3)CONTROLLER应该从 接收请求,从VIEW获取结果COMMAND OBJECT,然后将结果发送回VIEW

我理解正确吗?

谢谢。