0

假设我有以下模型:

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,但这同样不起作用。有任何想法吗?

4

1 回答 1

1

正如上面提到的 dmahapatro,您可以使用使用您的服务的自定义验证器:

static constraints = {
    currency validator: { value, obj ->
        if (!(value in obj.currencyService.getAvailableCurrencies())) 
            return ['invalid.currency']
    }
}
于 2013-04-19T06:26:35.820 回答