问题标签 [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 命令对象,但目前它不起作用并抛出错误:
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 应用程序中有以下命令对象:
我发布的表单的代码如下所示:
知道如何解决这个问题,以便将我的地址集绑定到命令对象吗?
grails - 用一个动作多次实例化抽象类
所以我有一个,比方说,Pet
抽象类,以及它的三个具体实现——比方说Cat
、Dog
和Bird
。正如具体的类所做的那样,这些家伙共享共同的领域,也有独特的领域——例如,他们都有Legs
,但只有 Birds 才有Wings
。因此,GSP 不同,更新方法不同,等等。
诀窍是我需要能够在单个操作中实例化、验证和持久化不确定数量的实例。一个简单的实现基本上如下:
创建.gsp
PetCommand.groovy
PetController.groovy
当然,在实际应用程序中,这会变得更加混乱,这完全违背了使用抽象类的目的。
有什么方法可以Pet
一次性绑定多个实例,然后循环遍历它们,例如,传入参数进行更新?我不知道,这整件事很混乱。
命令对象并不是绝对必要的,但它们解决了 Grails 控制器的许多烦人的冗余问题。
validation - Grails 命令对象根据其他字段的值验证字段
我有一个命令对象
我发现当声明
存在,验证不起作用。
我尝试添加
但它不起作用。
grails - 命令对象上的一个约束可以检查另一个约束的结果吗?
这是一个不起作用的简单示例,我想知道是否有一种方法可以a
在验证器块内部验证b
它是否尚未经过验证。
示例我认为它会如何工作:
注意:在这种情况下,obj.errors.hasFieldError('a')
即使a
为 null,也会返回 false。
json - Grails 命令对象和 404 当 JSON 中的空间来自 CURL
我继承了一个控制器。当发出一个 post 请求时,如果有一个结构良好的 JSON 文档,一切都很好。
当 JSON 字段中包含空格时,返回 404。但是,当从 Mozilla restclient 扩展发出相同的请求时,一切正常。
CURL 请求具体是:
网址映射:
那么,为什么 curl 中的空格会导致 grails 收到的请求正文出现问题?
谢谢
spring-mvc - Spring MVC 2.5 Command 对象值在表单提交时更改
我在命令对象中有一个字符串变量,它是我的 jsp 中的隐藏标签。单击按钮时,我正在使用值(例如“test”)设置此变量并提交表单。
在表单提交时,我获得了 Validator.validate() 方法的控制权。在此方法中,命令对象中变量的值被更改,即逗号被附加到值(例如“test”)。
我已经在 java 脚本端检查了调试,在那里为变量设置了正确的值(它没有附加额外的逗号)但是当它到达验证器时,它的值被改变了。
我不明白为什么只有那个特定的变量值被改变,而所有其他值都被正确设置。
请建议我应该如何纠正这个
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
在此操作期间,不会发生数据库查询,因此解决方法不包括这种情况。如何使用抽象域类作为命令对象?
grails - 如果索引大于 255,数据绑定不起作用
我正在使用grails version 2.3.9
. 在那里,我正在渲染一个带有复选框的列表。用户可以选择任何行并提交页面。在服务器端,我使用命令对象来绑定数据。
我的命令对象——
看法 -
行动 -
这段代码工作正常。但是,如果用户选择索引 (idx) 值大于 255 的行,则数据绑定不起作用。
请求参数——
[myDomains[256].id:66,myDomains[256]:[id:66],动作:myAction,控制器:myController]
我也试过
和
在命令对象中,但结果相同,没有数据绑定。
我在这里做错了吗?我怎样才能解决这个问题?
json - 在过滤器中访问 request.JSON 后 Grails 2.5.0 控制器命令对象绑定
request.JSON
在 Grails 2.5.0 控制器操作方法中,如果已在过滤器中访问,似乎 HTTP JSON 正文中的属性将不会用于命令对象绑定。
这是为什么?这对我来说没有任何意义。
有没有办法允许request.JSON
在过滤器中使用,也可以用于命令对象绑定?
grails - 如何使用 Grails 将数组的值映射到命令对象?
通常我使用命令对象来处理提交的值。但是,如果通过 AJAX(使用 jQuery)提交同一属性的多个值,我将无法使用命令对象。
在我的 GUI 中,用户可以单击复选框来标记一些对象。假设复选框的名称是提供者,即
当通过 AJAX 提交单击的值时,在 Grails 控制器中,这些值位于映射中:
如果单击多个复选框,则键是提供者[],值是字符串数组,否则它只是一个字符串。
问题是,我无法使用名为 provider[] 的属性创建命令对象。我尝试的是:
但这没有用。
所以,我的问题是,在这种情况下如何使用命令对象?我希望 Grails 做映射,我不想自己做映射。
我正在使用 Grails 2.3.11。
预先感谢,最好的问候,
丹尼尔