grails - Grails域对象未在gsp中刷新

标签 grails gsp grails-domain-class

我有一个域用户,有很多队列。添加和显示队列工作正常,但是当我从用户删除队列时,该队列被删除,但仍显示在浏览器中。仅当我注销并再次登录时, View 才会刷新。

我删除它们的地方:

def user = session?.user
    def queue = Queue.findById(params.queueId)

    if(queue){
        user.removeFromQueues(queue)
        queue.delete(flush:true)

        flash.message = "deleted queue with id: ${queue.id}"
        redirect(controller:'queue', action:'index')
    }

并以这种方式显示:
<g:each in="${session?.user?.queues}">
        <div id="queue">
            ${it.name} id:${it.id}
                <div id='queueButtons'>
                    <g:hiddenField name="queueId" value="${it.id}" /> 
                    <g:link controller='queue' action='delete' params="[queueId: "${it.id}"]">X</g:link>
                </div>
        </div>
    </g:each>

为什么用户不刷新?当我向用户添加队列时,它将立即显示。有没有一种刷新用户/ session 的方法?

最佳答案

如评论中所述,将用户域实例保留在 session 中不仅是一个非常糟糕的主意,而且是导致问题的原因。

您在 session 中的用户实例未附加到休眠 session ,因此不会被更新。

重新设计/重构您的代码,以仅保留 session 中的最少信息(用户ID是个好主意),然后再去那里。尝试在 session 中投入过多,可能会给自己带来更多的问题,而要解决的问题只会越来越多,而如果您继续沿着这一道路前进,事情只会变得更糟。

关于grails - Grails域对象未在gsp中刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28275872/

相关文章:

grails - Grails 2.4.4-休眠异常

grails - 在源文件夹中查找 Groovy 类

grails - GORM关系映射

grails - 如何更改 GRAILS GSP fieldValue 格式化整数的方式?

grails - 将值从 gsp 传递到 Controller

grails - 标准的单元测试模拟

grails - 如何在一个域类中混合映射的 'Reference'和列出的 'No Reference' hasMany关系?

java - 使用 contentType application/json 发布正文后,Grails 未以 UTF-8 进行编码

javascript - 无法解析日期 javascript 到 Grails

grails - 如何在gsp文件中访问Grails ServletContext?