Моя текущая проблема сейчас заключается в том, что маршаллер пользовательских объектов, который я создал с Grails 2.4.5 до grails 3.3.0 не работает на Grails 4.0.0 .Grails 4 отвечает на модель домена по умолчанию, а не на заказ, который я создаю.
Ниже приведены коды, которые у меня есть.Пожалуйста, просмотрите, и если вы обнаружите, что что-то не так, пожалуйста, дайте мне знать, ребята, я буду рад, если вы поможете мне с этим.
ResponseSender.groovy
package com.problem.solve.common
import org.springframework.http.HttpStatus
trait ResponseSender {
void sendResponse() {
render status: HttpStatus.NO_CONTENT
}
void sendResponse(def responseData) {
respond (responseData)
}
void sendResponse(HttpStatus status, def responseData) {
response.status = status.value()
respond (responseData)
}
}
Эта ResponseSender.groovy черта реализована на контроллере.
MarshallerInitializer.groovy
package com.problem.solve.marshaller
class MarshallerInitializer {
CustomObjectMarshallers customObjectMarshallers
void initialize() {
customObjectMarshallers.register()
}
}
this MarshallerInitializer.groovy будет вызываться при инициализации начальной загрузки.
package com.problem.solve.marshaller
class CustomObjectMarshallers {
List marshallers = []
void register() {
marshallers.each {
it.register()
}
}
}
Этот CustomObjectMarshallers.groovy будет регистрировать всех маршаллеров.
UserMarshaller.groovy
package com.problem.solve.marshaller.marshalls
import com.problem.solve.security.User
import grails.converters.JSON
class UserMarshaller {
void register() {
JSON.registerObjectMarshaller(User) { User user ->
return [
id: user.id,
fullName: user.fullName,
username: user.username,
emailAddress: user.emailAddress,
roles: user.authorities.authority,
dateCreated: user.dateCreated,
lastUpdated: user.lastUpdated,
_entityType: 'User'
]
}
}
Это UserMarshaller.groovy - пример модели домена, которую я хочу преобразоватьот доменной модели к ответу json.
resources.groovy
import com.problem.solve.marshaller.CustomObjectMarshallers
import com.problem.solve.marshaller.MarshallerInitializer
import com.problem.solve.marshaller.marshalls.*
// Place your Spring DSL code here
beans = {
customObjectMarshallers(CustomObjectMarshallers) {
marshallers = [
new UserMarshaller()
]
}
marshallerInitializer(MarshallerInitializer) {
customObjectMarshallers = ref('customObjectMarshallers')
}
}
Проблема с этой настройкой не работает на Grails 4, но эта настройка работает с Grails 2.4.5 и Grails 3.3.0.
Мне очень нужна ваша помощь, ребята.
Большое вам спасибо:)