问题标签 [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 回答
629 浏览

grails - 在 Grails 命令对象中绑定一组域对象

我正在尝试将一组对象绑定到我的 Grails 命令对象,但目前它不起作用并抛出错误:

Field error in object 'NewPersonCommand' on field 'addresses': rejected value [[Ljava.lang.String;@6d64b5fb]; codes [NewPersonCommand.addresses.typeMismatch.error,NewPersonCommand.addresses.typeMismatch,newPersonCommand.addresses.typeMismatch.error,newPersonCommand.addresses.typeMismatch,typeMismatch.NewPersonCommand.addresses,typeMismatch.addresses,typeMismatch.java.util.Set,typeMismatch]; arguments [addresses]; default message [Could not find matching constructor for: Address(java.lang.String)]>

我的 Grails 应用程序中有以下命令对象:

我发布的表单的代码如下所示:

知道如何解决这个问题,以便将我的地址集绑定到命令对象吗?

0 投票
1 回答
221 浏览

grails - 用一个动作多次实例化抽象类

所以我有一个,比方说,Pet抽象类,以及它的三个具体实现——比方说CatDogBird。正如具体的类所做的那样,这些家伙共享共同的领域,也有独特的领域——例如,他们都有Legs,但只有 Birds 才有Wings。因此,GSP 不同,更新方法不同,等等。

诀窍是我需要能够在单个操作中实例化、验证和持久化不确定数量的实例。一个简单的实现基本上如下:

创建.gsp

PetCommand.groovy

PetController.groovy

当然,在实际应用程序中,这会变得更加混乱,这完全违背了使用抽象类的目的。

有什么方法可以Pet一次性绑定多个实例,然后循环遍历它们,例如,传入参数进行更新?我不知道,这整件事很混乱。

命令对象并不是绝对必要的,但它们解决了 Grails 控制器的许多烦人的冗余问题。

0 投票
1 回答
219 浏览

validation - Grails 命令对象根据其他字段的值验证字段

我有一个命令对象

我发现当声明

存在,验证不起作用。

我尝试添加

但它不起作用。

0 投票
1 回答
47 浏览

grails - 命令对象上的一个约束可以检查另一个约束的结果吗?

这是一个不起作用的简单示例,我想知道是否有一种方法可以a在验证器块内部验证b它是否尚未经过验证。

示例我认为它会如何工作:

注意:在这种情况下,obj.errors.hasFieldError('a')即使a为 null,也会返回 false。

0 投票
1 回答
129 浏览

json - Grails 命令对象和 404 当 JSON 中的空间来自 CURL

我继承了一个控制器。当发出一个 post 请求时,如果有一个结构良好的 JSON 文档,一切都很好。

当 JSON 字段中包含空格时,返回 404。但是,当从 Mozilla restclient 扩展发出相同的请求时,一切正常。

CURL 请求具体是:

网址映射:

那么,为什么 curl 中的空格会导致 grails 收到的请求正文出现问题?

谢谢

0 投票
1 回答
167 浏览

spring-mvc - Spring MVC 2.5 Command 对象值在表单提交时更改

我在命令对象中有一个字符串变量,它是我的 jsp 中的隐藏标签。单击按钮时,我正在使用值(例如“test”)设置此变量并提交表单。

在表单提交时,我获得了 Validator.validate() 方法的控制权。在此方法中,命令对象中变量的值被更改,即逗号被附加到值(例如“test”)。

我已经在 java 脚本端检查了调试,在那里为变量设置了正确的值(它没有附加额外的逗号)但是当它到达验证器时,它的值被改变了。

我不明白为什么只有那个特定的变量值被改变,而所有其他值都被正确设置。

请建议我应该如何纠正这个

0 投票
0 回答
227 浏览

grails - 在 Grails 中将抽象域类作为命令对象或命令对象属性处理的预期方式是什么?

Grails 支持域类作为开箱即用的命令对象的属性。我可以将域类Stuff与命令一起使用StuffCommand,但如果Stuff是抽象类则不行。

Stuff.groovy

StuffCommand.groovy

ExampleController.groovy

然后,该请求http://server:port/ctx/example/doStuffWithStuff?stuff=123不会stuff从我的数据库中的表中获取记录 #123。我喜欢这种方法的简洁性。对数据库的查询要么不发生,要么静默失败。

但是,以下解决方法会有所帮助:

创建一个ValueConverter为抽象域类转换的类。类名必须以 结尾ValueConverter,除此之外可以随意命名,例如IdStringToStuffValueConverter

IdStringToStuffValueConverter

现在我可以触发上述请求,控制器将在数据绑定期间再次访问数据库。但是以下仍然无法按预期工作:

ExampleController.groovy

在此操作期间,不会发生数据库查询,因此解决方法不包括这种情况。如何使用抽象域类作为命令对象?

0 投票
1 回答
350 浏览

grails - 如果索引大于 255,数据绑定不起作用

我正在使用grails version 2.3.9. 在那里,我正在渲染一个带有复选框的列表。用户可以选择任何行并提交页面。在服务器端,我使用命令对象来绑定数据。

我的命令对象——

看法 -

行动 -

这段代码工作正常。但是,如果用户选择索引 (idx) 值大于 255 的行,则数据绑定不起作用。

请求参数——

[myDomains[256].id:66,myDomains[256]:[id:66],动作:myAction,控制器:myController]

我也试过

在命令对象中,但结果相同,没有数据绑定。

我在这里做错了吗?我怎样才能解决这个问题?

0 投票
1 回答
1187 浏览

json - 在过滤器中访问 request.JSON 后 Grails 2.5.0 控制器命令对象绑定

request.JSON在 Grails 2.5.0 控制器操作方法中,如果已在过滤器中访问,似乎 HTTP JSON 正文中的属性将不会用于命令对象绑定。

这是为什么?这对我来说没有任何意义。

有没有办法允许request.JSON在过滤器中使用,也可以用于命令对象绑定?

0 投票
1 回答
579 浏览

grails - 如何使用 Grails 将数组的值映射到命令对象?

通常我使用命令对象来处理提交的值。但是,如果通过 AJAX(使用 jQuery)提交同一属性的多个值,我将无法使用命令对象。

在我的 GUI 中,用户可以单击复选框来标记一些对象。假设复选框的名称是提供者,即

当通过 AJAX 提交单击的值时,在 Grails 控制器中,这些值位于映射中:

如果单击多个复选框,则键是提供者[],值是字符串数组,否则它只是一个字符串。

问题是,我无法使用名为 provider[] 的属性创建命令对象。我尝试的是:

但这没有用。

所以,我的问题是,在这种情况下如何使用命令对象?我希望 Grails 做映射,我不想自己做映射。

我正在使用 Grails 2.3.11。

预先感谢,最好的问候,

丹尼尔