gpt4 book ai didi

Grails Controller 服务 - 用于属性值的 src/groovy 轮询 Controller

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

我基本上是在尝试获取任务在覆盖模板中在屏幕上显示给用户的时间百分比。

我有一项服务正在计算进程百分比:

def progressCalculation(requestsToSend, requestsSent, requestsFailed, progressPercentage) {

progressPercentage = 100 / requestsToSend * (requestsSent + requestsFailed)

progressPercentage = Math.round(progressPercentage * 1) / 1

MyController upCont = new MyController()
upCont.progress(progressReport.progressPercentage)
}

这继续发送 progressReport.progressPercentage给 Controller :
def progress(progressData) {

int statusToView = progressData

if (statusToView % 5==0) {
[statusToView: statusToView]
}
}

我从这里创建了一个使用 websockets 的 src/groovy 文件: https://github.com/vahidhedayati/grails-websocket-example/blob/master/README.md
我的连接正常,但我需要使用正在工作的 websocket 在 View 上显示百分比。
@OnMessage
public String handleMessage(String message) {

message = MyController.progressPercentage

String replyMessage = "echo "+message
return replyMessage
}

现在我要尝试的是从 Controller 返回 progressPercentage 值到 src/groovy 文件,以便在任务完成时我的 View 可以使用最新的属性值不断更新。

最佳答案

MyController upCont = new MyController()严重地?

移动托管和修改 progressPercentage 的代码是个好主意变量到服务层并使用服务而不是 Controller 访问它。
myService.progressPercentage而不是 MyController.progressPercentage
您还必须注入(inject) myService ,而不是将其实例化为 myService = new MyService() ,服务是单例,你不能像这样实例化它们。它们由 spring container 管理。 .

实际上,如果你这样做 MyController upCont = new MyController()并且您尝试访问 upCont 的属性你会得到这个漂亮的错误信息:

java.lang.IllegalStateException:未找到线程绑定(bind)请求:您是指实际 Web 请求之外的请求属性,还是在原始接收线程之外处理请求?如果您实际上是在 Web 请求中操作并且仍然收到此消息,则您的代码可能在 DispatcherServlet/DispatcherPortlet 之外运行:在这种情况下,请使用 RequestContextListener 或 RequestContextFilter 来公开当前请求。

关于Grails Controller 服务 - 用于属性值的 src/groovy 轮询 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29258966/

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