gpt4 book ai didi

grails - Grails:从另一个 Controller 更新Index.gsp

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

我的Grails应用正在使用2.3.6版

在此应用中,有一个Controller类:

class UserOrderController {

def index(Integer max) {
params.max = Math.min(max ?: 20, 100)
respond UserOrder.list(params), model:[userOrderInstanceCount: WorkOrder.count()]
}
}

现在,在另一个 Controller 中,我正在访问 UserOrder 对象,并根据产品ID进行过滤。产品ID是UserOrder域类中的字符串属性。

另一个 Controller 是:
class UserOrderFilterController {

def getUOBasedOnID () {

// Here i get a new list for **UserOrder**
// Now i want to draw the UserOrderController page with the new list
}
}

我对Grails还是很陌生,不知道该怎么做。

我应该在UserOrderController类中创建一个新的INDEX函数并传递新列表吗?

如下图所示:
class UserOrderController {

def index(Integer max) {
params.max = Math.min(max ?: 20, 100)
respond UserOrder.list(params), model:[userOrderInstanceCount: userOrder.count()]
}

def index(List UserOrder) {

// create page???
}

}

更新:

UserOrderFilterController 具有它自己的 index.gsp 文件。
在做什么:访问UserOrder域类的所有对象,并根据属性对其进行过滤。

现在在 UserOrderFilterController 的index.gsp中,我将显示找到的对象/订单的总数。该数字将显示为带有 href 的超链接,当用户单击该数字时,它将转到 UserOrderController index.gsp 页面,仅显示已过滤的 UserOder

因此,期望的是:
<a href='${createLink(controller:'UserOrder', action:'index')}'>%s</a>

上面显示的 href ,带有 参数字段,该字段将包含 UserOrder 的过滤列表。

我不知道如何将参数/列表添加到 href 。这可能吗?

最佳答案

Grails中的每个action都有一个匹配的view。复制 Action 会带来麻烦。如果您有一些新功能值得单独使用,则应创建一个新操作和一个新 View 。

如果它属于主页,则通过相同的index方法放置它。

请注意,在grails中,您只需将值传递到.gsp页,而.gsp页就是处理数据格式的地方。您的action应该对 View 的结构绝对了解0。这是MVC中的核心概念。

在这种情况下,您可以按照the docs重定向到 Controller 。最让您感兴趣的一个是:

redirect(controller: "yourController", action:"index", params=[filteredList: filteredList]);

这将重定向到您的UserOrderController中的现有index Action ,并传递经过过滤的列表。从那里,您可以拥有类似的东西。
if(params.filteredList) {
// You know this came from the filtered controller, so display this and don't
// make a DB call.
}

指向便笺
  • grails应用程序的结构让我感到担忧。为什么要使用一个完全独立的 Controller 来简单地过滤数据?

  • 编辑

    采用 createLink方法可以得到一些改进。代替..
    <a href='${createLink(controller:'UserOrder', action:'index')}'>%s</a>

    您可以使用 g:link功能:
    <g:link controller="UserOrder" action="index" params=['filteredList':filteredList]>%s</g:link>

    关于grails - Grails:从另一个 Controller 更新Index.gsp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28970679/

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