Grails:从另一个控制器更新 Index.gsp
Grails : Updating Index.gsp from another controller
我的 Grails 应用程序使用的是版本 2.3.6
在这个应用程序中有一个控制器 class:
class UserOrderController {
def index(Integer max) {
params.max = Math.min(max ?: 20, 100)
respond UserOrder.list(params), model:[userOrderInstanceCount: WorkOrder.count()]
}
}
现在在另一个控制器中,我正在访问 UserOrder 对象并根据产品 ID 进行过滤。产品 ID 是 UserOrder 域 class.
中的字符串 属性
另一个控制器是:
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 class 中创建一个新的 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 域 class 的所有对象并根据 属性.
过滤它们
现在,在 UserOrderFilterController 的 index.gsp 中,我将显示找到的 objects/orders 的总数。此号码将显示为使用 href 的超链接,当用户单击它时,它将转到 index.gsp 页面 UserOrderController,仅显示过滤后的 UserOder。
所以我期待的是:
<a href='${createLink(controller:'UserOrder', action:'index')}'>%s</a>
A href 如上所示,带有 params 字段,该字段将包含 UserOrder[=54 的过滤列表=]的。
我不知道如何将 params/list 添加到 href。这可能吗?
Grails 中的每个 action
都有一个匹配的 view
。重复操作是自找麻烦。如果您有一些 新 功能值得单独放置一个页面,那么您应该创建一个新操作和一个新视图。
如果属于在主页上,则通过相同的index
方法将其放入。
请注意,在 grails 中,您只需将值传递给 .gsp
页面,而 .gsp
页面负责处理数据的格式设置。您的 action
对视图结构的了解绝对为 0。这是MVC中的一个核心概念。
在这种情况下,您可以根据 the docs 重定向到控制器。您最感兴趣的是:
redirect(controller: "yourController", action:"index", params=[filteredList: filteredList]);
这将重定向到您的 UserOrderController 中的现有索引操作,并传入过滤后的列表。从那里,你可以有类似的东西..
if(params.filteredList) {
// You know this came from the filtered controller, so display this and don't
// make a DB call.
}
注意事项
- 你的 grails 应用程序的结构让我很担心。为什么你有一个完全独立的控制器来简单地过滤数据?
编辑
采用 createLink
方法可以稍微改进一下。而不是..
<a href='${createLink(controller:'UserOrder', action:'index')}'>%s</a>
您可以使用 g:link
功能:
<g:link controller="UserOrder" action="index" params=['filteredList':filteredList]>%s</g:link>
如果您尝试为过滤器 UserOrderFilterController
创建新的控制器,您可以
class UserOrderFilterController {
def getUOBasedOnID () {
//get filtered list
respond filteredList, [view:'userOrder/index',model:[userOrderInstanceCount: filteredListCount]]
}
}
您可以查看有关回复的更多信息here。
我的 Grails 应用程序使用的是版本 2.3.6
在这个应用程序中有一个控制器 class:
class UserOrderController {
def index(Integer max) {
params.max = Math.min(max ?: 20, 100)
respond UserOrder.list(params), model:[userOrderInstanceCount: WorkOrder.count()]
}
}
现在在另一个控制器中,我正在访问 UserOrder 对象并根据产品 ID 进行过滤。产品 ID 是 UserOrder 域 class.
中的字符串 属性另一个控制器是:
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 class 中创建一个新的 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 域 class 的所有对象并根据 属性.
过滤它们现在,在 UserOrderFilterController 的 index.gsp 中,我将显示找到的 objects/orders 的总数。此号码将显示为使用 href 的超链接,当用户单击它时,它将转到 index.gsp 页面 UserOrderController,仅显示过滤后的 UserOder。
所以我期待的是:
<a href='${createLink(controller:'UserOrder', action:'index')}'>%s</a>
A href 如上所示,带有 params 字段,该字段将包含 UserOrder[=54 的过滤列表=]的。
我不知道如何将 params/list 添加到 href。这可能吗?
Grails 中的每个 action
都有一个匹配的 view
。重复操作是自找麻烦。如果您有一些 新 功能值得单独放置一个页面,那么您应该创建一个新操作和一个新视图。
如果属于在主页上,则通过相同的index
方法将其放入。
请注意,在 grails 中,您只需将值传递给 .gsp
页面,而 .gsp
页面负责处理数据的格式设置。您的 action
对视图结构的了解绝对为 0。这是MVC中的一个核心概念。
在这种情况下,您可以根据 the docs 重定向到控制器。您最感兴趣的是:
redirect(controller: "yourController", action:"index", params=[filteredList: filteredList]);
这将重定向到您的 UserOrderController 中的现有索引操作,并传入过滤后的列表。从那里,你可以有类似的东西..
if(params.filteredList) {
// You know this came from the filtered controller, so display this and don't
// make a DB call.
}
注意事项
- 你的 grails 应用程序的结构让我很担心。为什么你有一个完全独立的控制器来简单地过滤数据?
编辑
采用 createLink
方法可以稍微改进一下。而不是..
<a href='${createLink(controller:'UserOrder', action:'index')}'>%s</a>
您可以使用 g:link
功能:
<g:link controller="UserOrder" action="index" params=['filteredList':filteredList]>%s</g:link>
如果您尝试为过滤器 UserOrderFilterController
创建新的控制器,您可以
class UserOrderFilterController {
def getUOBasedOnID () {
//get filtered list
respond filteredList, [view:'userOrder/index',model:[userOrderInstanceCount: filteredListCount]]
}
}
您可以查看有关回复的更多信息here。