Grails 4: маршаллер модели пользовательских доменов не работает на Grails 4 - PullRequest
0 голосов
/ 24 сентября 2019

Моя текущая проблема сейчас заключается в том, что маршаллер пользовательских объектов, который я создал с 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.

Мне очень нужна ваша помощь, ребята.

Большое вам спасибо:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...