在Grails中,如何从第三方数据源应用inList约束?

时间:2013-04-19 02:10:51

标签: grails

假设我有以下型号:

class Product {
    String name
    String price
    String currency

    static constraints = {
        currency inList: ['USD', 'EUR']
}

现在我们有一项新要求,即必须从服务中提取inList currency约束:

class CurrencyService {
    def getAvailableCurrencies = {
        ...
    }
}

如何使这项工作?我试过了:

class Product {
    def currencyService
    ...

    static constraints = {
        currency inList: currencyService.getAvailableCurrencies()
    }
}

但我无法访问currencyService上下文中的static constraints实例。我也尝试使用static currencyService,但这同样不起作用。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

正如上面提到的dmahapatro,您可以使用使用您服务的custom validator

static constraints = {
    currency validator: { value, obj ->
        if (!(value in obj.currencyService.getAvailableCurrencies())) 
            return ['invalid.currency']
    }
}