flash对象映射如何在grails框架内工作

Ant*_*ony 4 grails grails-controller

Flash,它是一个请求的临时存储映射.

我想知道如何在grails 核心框架上实现它

特别是我对负责将flash地图放入请求中的类感兴趣,然后在请求处理完成后将其取出.

dma*_*tro 10

Flash实际上是当前请求和下一个请求的临时存储映射.除非在下一个请求中重新填充条目(将来是最新的),否则它将不会在下一个请求之后保留条目.以下是它在Grails中的工作原理:

  • FlashScope它扩展地图本身接口有两个方法next(),并getNow()通过实施GrailsFlashScope.所有这些都可以在grails-web-mvc.

  • GrailsFlasScope主要维护两个并发的HasMap(一个用于当前请求,另一个用于下一个请求)来保存条目.它实现了next()FlashScope清洁和"限制到下一个请求"的部分:

    一个.清除电流
    b.将下一个作为当前
    c.明确接下来

  • 接下来要关注的是GrailsWebRequestFilter(implements OncePerRequestFilter),它确保每次调度始终只有一次请求执行.

  • 所有http servlet请求都经过筛选GrailsWebRequestFilter.此过滤器将闪存范围设置为next每次检索到最新有效信息时.

  • 现在问题是如何FlashScope协调当前和下一个地图?嗯,这就是为什么FlashScope从延伸Map.FlashScope get(key)从地图覆盖以通过确保从next地图检索值来协调两个地图,否则切换到当前地图.

  • 默认情况下如何flash使用controllers?所有控制器继承ControllersApi继承CommonWebApi.

我希望你能得到你想要的东西..