gpt4 book ai didi

grails - Grails-命令对象,服务方法

转载 作者:行者123 更新时间:2023-12-02 14:57:58 25 4
gpt4 key购买 nike

我不是一个精通编程的人,所以请多包涵。

我已经阅读了有关命令对象的博客条目和文档。我从未使用过它,并且想知道是否应该这样做。 (我可能应该...)

用户上传文件时,我的项目需要解析,排序,计算并将结果保存到数据库中。

因此,根据我阅读的blog entries及其对应的github code之一,

1)SERVICE应该接收文件上传,解析上传的文件(主要是docs和pdf),使用RegEx对解析的数据进行排序,并计算数据,

2)COMMAND OBJECT应该调用SERVICE,收集结果并将结果发送回 Controller ,并将结果保存到数据库中,

3)CONTROLLER应该接收VIEW的请求,从COMMAND OBJECT获取结果,然后将结果发送回VIEW

我理解正确吗?

谢谢。

最佳答案

我发现这是最好的设置。这是我在生产中使用的示例:

命令对象(携带数据并确保其有效性):

@grails.validation.Validateable
class SearchCommand implements Serializable {
// search query
String s
// page
Integer page

static constraints = {
s nullable: true
page nullable: true
}

}

Controller (将请求定向到服务,然后从服务获取响应并将该响应定向到 View ):
class SomeController {

//inject service
def someService

def search(SearchCommand cmd) {
def result = someService.search(cmd)
// can access result in .gsp as ${result} or in other forms
render(view: "someView", model: [result: result])
}
}

服务(处理业务逻辑并从域中获取数据):
class SomeService {
def search(SearchCommand cmd) {
if(cmd.hasErrors()) {
// errors found in cmd.errors
return
}
// do some logic for example calc offset from cmd.page
def result = Stuff.searchAll(cmd.s, offset, max)
return result
}
}

域(此处处理所有数据库查询):
class Stuff {
String name
static constraints = {
name nullable: false, blank: false, size: 1..30
}

static searchAll(String searchQuery, int offset, int max) {
return Stuff.executeQuery("select s.name from Stuff s where s.name = :searchQuery ", [searchQuery: searchQuery, offset: offset, max:max])
}
}

关于grails - Grails-命令对象,服务方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36627019/

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