如何使用添加了 gsp 依赖项的 rest-api 配置文件呈现 grails 404 GSON 模板

How do you render the grails 404 GSON template with the rest-api profile with the gsp dependency added

我已经使用 rest-profile 构建了一个 grails 4.0.10 应用程序。

然后添加控制台插件。 (因为实在是太方便了) compile 'org.grails.plugins:grails-console:2.1.1'

它依赖于 gsps。 compile "org.grails.plugins:gsp" // console plugin needs to render gsps.

添加 gsp 插件后,404 处理程序现在呈现默认 notFound.gsp 而不是 notFound.gson 文件。

有没有办法设置 URL 映射以默认呈现 .gson 视图而不是 .gsp 视图?

我发现的唯一机制是创建一个错误控制器来手动处理它,但我觉得我忽略了 UrlMappings 中一些非常简单的东西。

class UrlMappings {

    static mappings = {
        ...
        "404"(controller: "error", action:'notFound')
    }
}

然后创建一个 errorController 来呈现视图。

class ErrorController {
    static responseFormats = ['json', 'xml']
    
    def notFound() {
        render(view: "/notFound")
    }
}

这里希望 "404"(view: '/notFound', pleaseUseGson: true) 我没有找到的设置。

系统变得混乱,因为在缓存插件中隐藏了一个 notFound.gsp 条目。

views.properties 文件有这一行

/WEB-INF/grails-app/views/notFound.gsp=gsp_cachenotFound_gsp

我不完全确定为什么在我的应用程序中先使用缓存插件中的这个视图,但这是以后的问题。

通过将 notfound.gson 文件重命名为其他名称似乎可以避免该问题。

所以改变

"404"(view: '/notFound')

"404"(view: '/notFound404')

并将文件 notFound.gson 重命名为 notFound404.gson。