繁体   English   中英

Grails域对象未在gsp中刷新

[英]Grails domain object not refreshing in gsp

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

我删除它们的地方:

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>

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

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

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

重新设计/重构代码,以仅保留会话中的最少信息(用户ID是个好主意),然后再去那里。 尝试在会话中投入过多,可能给自己造成的问题比解决的问题要多,而如果您继续坚持下去,事情只会变得更糟。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM