gpt4 book ai didi

grails - 重用json/model对象以避免对 Controller 进行额外的调用

转载 作者:行者123 更新时间:2023-12-02 15:20:53 25 4
gpt4 key购买 nike

我有一个普通的userController和一个_listMyUsers.gsp。
_listMyUsers.gsp正在使用

 <g:dojoRemoteForm
formName="userSearchForm"
id="userSearchForm"
url="[controller:'user',action:'search']"
update="[success:'content']">

userController(搜索)中的方法是一个简单的条件构建器,可将以下内容返回给gsp。您可以使用gsp中的控件来自定义搜索条件参数(作为param.field_name传递给 Controller ​​)​​:
    render (template:"listUsers",
model:[
users:users,
userTypes:UserTypeLookup.list(),
sortby:params.sortby,
direction:nextDirection,
currentDirection:sortDirection,
pager:pager,
organizations:orgs,
userType:userSearchTypes
])

现在,这一切都很好,然后使用该模型构建我的usersList表。当我在结果中单击一个用户以编辑所述用户数据,然后保存时,出现了我的问题。保存完成并返回到主listUsers表。但是它将重新运行搜索方法,并在选择中将所有searchCriteria通配符都标记为“ALL”(因此将返回数据库中的所有用户)。
我的问题是,如何保存返回的初始“自定义”搜索,以便在编辑完用户后仍保留原始的“搜索”,因此我的UI用户不必回头重新执行userSearch再次标准?
谢谢,

最佳答案

Grails Cache Plugin可能会帮助您。您可以使用用户的查询参数作为方法参数来缓存search操作的输出(因此它们可以用作缓存的键)。

@Cacheable('searchResults')
def search(String sortBy, String sortDirection /* other parameters */) {
// render the output
}

然后,在保存操作中,可以使用 CacheEvict批注来清除 searchResults缓存,因此 search操作将返回最新数据:
@CacheEvict(value='searchResults', allEntries=true)
def saveUser() {
//save the user and return a response code
}

有关指定在缓存中驱逐哪些项目等的详细信息,请参见 plugin documentation

关于grails - 重用json/model对象以避免对 Controller 进行额外的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36780797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com