【问题标题】:Service validate domain model服务验证域模型
【发布时间】:2018-05-14 04:48:35
【问题描述】:

我遇到了来自服务域验证的消息方法的问题。有谁知道如何解决这个问题?下面是服务方法。当我的控制器呼叫时:glossaryService.post(params, 'save')

@Transactional
class GlossaryService {

//  Saving glossary
def post( def params,def currentURI ) {
    params.status = params.status ? Status.PUBLISHED.value() : Status.DRAFT.value()

    def result = [success: false, message: ""]
    def glossary = null

    if (params.action == 'save') {
        glossary = new Glossary(params)
    } else if (params.action == 'update') {
        glossary = Glossary.get(params.id)
        glossary.name = params?.name
        glossary.description = params?.description
        glossary.glossaryTerm = params?.glossaryTerm
        glossary.status = params?.status
    }

    if (glossary.validate()) {
        result = glossary.save(flush: true, failOnError: true)
    }

    if (glossary.hasErrors()) {
        transactionStatus.setRollbackOnly()

        result.errors = glossary.errors
        def errors = glossary.errors.allErrors.collect {
            message(error: it)
        }

        respond glossary.errors, view: '/admin/glossary/'+currentURI, model: [
                glossary: params
        ]
        return
    }

    return result
}
}

它提示的错误是:

类:groovy.lang.MissingMethodException

消息:没有方法签名:com.content.GlossaryService.message() 适用于参数类型:(java.util.LinkedHashMap) 值:[[error:Field error in object 'com.content.Glossary' on字段“名称”:拒绝值 [null];代码 [com.content.Glossary.name.nullable.error.com.content.Glossary.name,com.content.Glossary.name.nullable.error.name,com.content.Glossary.name.nullable.error.java。 lang.String,com.content.Glossary.name.nullable.error,glossary.name.nullable.error.com.content.Glossary.name,glossary.name.nullable.error.name,glossary.name.nullable.error. java.lang.String,glossary.name.nullable.error,com.content.Glossary.name.nullable.com.content.Glossary.name,com.content.Glossary.name.nullable.name,com.content.Glossary。 name.nullable.java.lang.String,com.content.Glossary.name.nullable,glossary.name.nullable.com.content.Glossary.name,glossary.name.nullable.name,glossary.name.nullable.java。 lang.String,glossary.name.nullable,nullable.com.content.Glossary.name,nullable.name,nullable.java.lang.String,nullable];参数 [名称,com.content.Glossary 类];默认消息 [类 [{1}] 的属性 [{0}] 不能为空]]] 可能的解决方案:isCase(java.lang.Object)

【问题讨论】:

  • 我认为错误说明了一切:您致电 message(error: it) 并且您的服务中没有这样的方法。您不能像这样将代码从控制器转移到服务中。 respondmessage 之类的方法仅在控制器中可用(基本上通过继承)

标签: grails grails-orm


【解决方案1】:

注入messageSource

MessageSource messageSource

那就用吧

messageSource.getMessage(...)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多