gpt4 book ai didi

data-binding - Grails 与命令对象的数据绑定(bind)

转载 作者:行者123 更新时间:2023-12-02 14:13:13 25 4
gpt4 key购买 nike

谁能向我解释 grails 中的数据如何以及哪些特定类与命令对象绑定(bind)?

在 JSON 发布请求的情况下,我看到了一些奇怪的行为。例如,我有使用自定义属性编辑器注册的嵌套命令对象。仅当我收集内部命令时才使用我的自定义属性编辑器,即在这种情况下我看到 setValue(Object obj) 被调用。例如,

class TestCommand
{
List<InnerCommand> innerCommands = ListUtils.lazyList([], FactoryUtils.instantiateFactory(InnerCommand))
}

但是当我有一个简单的嵌套命令时,我的属性编辑器不会被调用,这是我不想要的。例如,
class TestCommand
{
InnerCommand cmd = new InnerCommand
}

在这种情况下,我的自定义编辑器的 setValue(Object obj) 和 setAsString(String text) 都不会被调用。

我正在使用带有 JSON 输入的发布请求。如果有人理解这种行为,请告诉我。

最佳答案

在 Grails 中有两种实现命令对象的方法

1)在 Controller 内创建命令对象
2) 在 src/groovy 目录中创建命令对象

两种方式都必须在类(class)开始前定义注释 "@grails.validation.Validateable"

1) 类型 1 LoginController.groovy

class LoginController{

def login(){
LoginCommand loginCommand=new LoginCommand()
bindData(loginCommand, params)
if(loginCommand.validate()){
render 'login success'
}else{
render 'invalid user name or password'
}
}
}

@grails.validation.Validateable
class LoginCommand {

String emailId
String password

static constraints = {
emailId blank:false,nullable:false,email:true
password blank:false,nullable:false
}

}

2) 输入 2 LoginCommand.groovy
@grails.validation.Validateable
class LoginCommand {

String emailId
String password

static constraints = {
emailId blank:false,nullable:false,email:true
password blank:false,nullable:false
}

}

注意:您需要从您的 .gsp 页面传递 'emailId' 和 'password' 值。

关于data-binding - Grails 与命令对象的数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10290158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com