2017-11-30 6 views
0

서비스의 도메인 유효성 검사에서 메시지 메서드에 문제가 있습니다. 아무도 이것을 고치는 방법을 알고 있습니까? 아래는 서비스 방법입니다. 내 컨트롤러가 전화 할 때 : 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 
} 
} 

가 프롬프트 오류 :

Class: groovy.lang.MissingMethodException

Message: No signature of method: com.content.GlossaryService.message() is applicable for argument types: (java.util.LinkedHashMap) values: [[error:Field error in object 'com.content.Glossary' on field 'name': rejected value [null]; codes [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]; arguments [name,class com.content.Glossary]; default message [Property [{0}] of class [{1}] cannot be null]]] Possible solutions: isCase(java.lang.Object)

+1

나는 오류가 그 모든 것을 말한다고 생각한다 : 당신은'message (error : it)'를 호출하고 당신의 서비스에는 그러한 메소드가 없다. 컨트롤러에서 컨트롤러로 코드를 옮길 수는 없습니다. 'respond'와'message'와 같은 메소드는 컨트롤러에서만 사용할 수 있습니다 (기본적으로 상속을 통해) – cfrick

답변

1

를 사용해서 messageSource

MessageSource messageSource

를 주입 그것을

messageSource.getMessage(...)

,536,