サービスからのドメイン検証のメッセージメソッドに問題があります。誰もがこれを修正する方法を知っていますか?以下はサービス方法です。私のコントローラが電話しているとき: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)
私はエラーがそれを言っていると思います:あなたは 'message(error:it)'を呼び出し、あなたのサービスにそのようなメソッドはありません。コントローラーのコードをそのようなサービスに移動することはできません。 'respond'や' message'のようなメソッドは、コントローラ内でのみ利用できます(基本的には継承を介して) – cfrick