【问题标题】:Grails command object not validatingGrails 命令对象未验证
【发布时间】:2012-03-14 14:31:35
【问题描述】:

我确定这完全是一个菜鸟问题,我错过了一个明显的错误,但无论如何都可以。

我有一个命令对象:

public class LeadCommand {
    Integer OwnerId
    String FirstName
    String LastName
    String Email
    String Phone1
    String Company
    String StreetAddress1
    String City
    String State
    String PostalCode
    String Country
    String Leadsource

    static constraints = {
        OwnerId(blank: false)
        FirstName(blank: false)
        LastName(blank: false)
        Email(blank: false, email: true)
        Phone1(blank: false)
        Company(blank: false)
        StreetAddress1(blank: false)
        City(blank: false)
        State(blank: false)
        PostalCode(blank: false)
        Country(blank: false)
        Leadsource(blank: false)
    }
}

还有一个控制器动作:

def process = { LeadCommand cmd ->

    if (cmd.hasErrors()) {
        redirect(action: index)
    } else {
            // do stuff
    }
}

命令对象正在填充,但未遵循我设置的验证约束。我已经通读了几次文档,但我一定遗漏了一些东西......

提前致谢

顺便说一句 - 我正在使用 Grails 1.3.7

编辑:

这里是一些示例帖子数据:(直接来自 params 地图)

[Phone:, 
OwnerId:1, 
Country:United States, 
LastName:, 
City:, 
PostalCode:, 
State:, 
Email:, 
Leadsource:, 
FirstName:, 
Submit:Submit, 
Company:, 
StreetAddress1:, 
action:process, 
controller:leadEntry]

【问题讨论】:

  • 你能发布一个你提交的测试数据的例子吗?
  • @schmolly159 用帖子数据更新了问题

标签: validation grails groovy command-objects


【解决方案1】:

重命名您的命令属性以使用标准 Java 命名约定的驼峰式大小写,首字母小写。 Grails 大量使用这些约定,如果您不遵守它们,有时会中断。例如:

public class LeadCommand {
    Integer ownerId
    String firstName
    String lastName
    String email
    String phone1
    String company
    String streetAddress1
    String city
    String state
    String postalCode
    String country
    String leadsource

    static constraints = {
        ownerId(blank: false)
        firstName(blank: false)
        lastName(blank: false)
        email(blank: false, email: true)
        phone1(blank: false)
        company(blank: false)
        streetAddress1(blank: false)
        city(blank: false)
        state(blank: false)
        postalCode(blank: false)
        country(blank: false)
        leadsource(blank: false)
    }
}

【讨论】:

  • 这也是我的想法。属性或方法的首字母大写 = :(
  • 做到了!谢谢阿泰勒。我通常遵循这些约定,但试图走捷径(数据正在传递到另一个需要大写字母的应用程序),但显然 Grails 不喜欢。再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-17
  • 1970-01-01
  • 2015-12-12
  • 2013-06-06
相关资源
最近更新 更多