【问题标题】:How Does Respond Know Not to Render A View响应如何知道不渲染视图
【发布时间】:2015-08-18 22:00:54
【问题描述】:

我遇到了一个过滤器问题,其中respond 方法正在呈现视图,即使内容类型是“application/json”。我已经通过调试器一直验证到JSON.java 类。但是在我的过滤器中调用chain.doFilter() 之后,仍然有一些东西触发GroovyPagesServlet 尝试查找一个视图,但它找不到,所以它返回一个404。

我的问题基本上是,忽略我的过滤器,grails 中的什么机制说如果我正在呈现 JSON 内容,不呈现视图?我可能会弄清楚我是否知道,也许我可以在 Filter 中以某种方式触发它。

【问题讨论】:

    标签: json grails groovy


    【解决方案1】:

    如果您的用户代理与https://github.com/grails/grails-core/blob/v3.0.4/grails-plugin-mimetypes/src/main/groovy/org/grails/web/mime/HttpServletResponseExtension.groovy#L63 指定的用户代理之一匹配,则忽略接受标头。 format 请求参数通常是处理响应类型的方式。

    【讨论】:

    • 是的,我们已经尝试了各种用户代理以及格式参数。还有其他事情发生,这可能是由于我们正在使用响应包装器。只是无法获得足够的内部计算来确定为什么 grails 仍然想要渲染 gsp。
    • 如果我添加 gsp,那么一切正常。它返回一个带有 JSON 响应(而不是 HTML)的 200,这对我来说更加神秘。
    猜你喜欢
    • 2018-08-06
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 2015-10-05
    • 1970-01-01
    • 2021-05-14
    相关资源
    最近更新 更多