【问题标题】:What is the best way to debug Bootstrap.groovy?调试 Bootstrap.groovy 的最佳方法是什么?
【发布时间】:2011-03-18 16:58:27
【问题描述】:

我正在向数据库中插入一些数据,但即使我看不到任何验证错误,也没有插入一些对象。使用 stacktrace 或 sql 出错的最佳方法是什么,以便我找出问题所在?

例如我做的,new XXXXX(property: "blah").save(flush:true)

我在启动时看不到错误(grails run-app),但我也看不到我的数据。我确实看到了我的许多对象的数据,所以我确定这与我的对象、验证甚至关联有关,但我需要一种简单的方法来查看日志/控制台中的问题...

我确定这很容易,但是...

【问题讨论】:

    标签: grails bootstrapping


    【解决方案1】:

    如果在引导过程中失败,我建议让 save() 抛出异常,因为验证错误将由您的代码引起,而不是用户输入。

    new Xxxxx(property: "blah").save(failOnError: true)
    

    异常将包含一段非常冗长的文本,但请检查第一行,如下所示:

    grails.validation.ValidationException: 期间发生验证错误 保存():

    对象中的字段错误 'mypackage.Xxxxx' 在字段上 'myProperty': 拒绝值 [null]

    【讨论】:

    • 在大多数情况下,一组健壮的单元测试将消除对此的需求。
    【解决方案2】:

    首先,我会围绕您的域编写一个单元测试。如果这似乎可行,但您在 Bootstrap 中仍然遇到问题,那么对于每次保存,我都会检查域是否有错误..

    def xxxxx = new XXXXX(...)
    xxxxx.save(flush:true)
    def errors = xxxxx.errors
    

    然后我会在其中放置一个断点,以便检查错误对象。否则,您可以打印错误对象,并且通常从中收集足够的信息以找出发生了什么。

    【讨论】:

    • 应该是def xxxxx new XXXXX(...); xxxxx.save(flush:true); def errors = xxxxx.errors,因为如果 save() 未验证,则返回 null
    • 是的,赶时间。固定的。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 2010-11-23
    • 2014-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    相关资源
    最近更新 更多