Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc 如何定期调用相同的spring mvc控制器方法_Spring Mvc_Scheduler_Freemarker - Fatal编程技术网

Spring mvc 如何定期调用相同的spring mvc控制器方法

Spring mvc 如何定期调用相同的spring mvc控制器方法,spring-mvc,scheduler,freemarker,Spring Mvc,Scheduler,Freemarker,我迫切需要找到一种方法来周期性地调用带有@RequestMapping注释的方法。 这个项目似乎很简单。但这种简单性是有代价的。 通过SpringIntegration的轮询器对象,我从文件中定期读取更新的数据。SpringPoller对象接受我通过读取.properties文件提供的interval属性。定期数据写入@组件中,我将其注入控制器以填充模型: @Autowired Results results; @RequestMapping("/") String exposeResult

我迫切需要找到一种方法来周期性地调用带有@RequestMapping注释的方法。 这个项目似乎很简单。但这种简单性是有代价的。 通过SpringIntegration的轮询器对象,我从文件中定期读取更新的数据。SpringPoller对象接受我通过读取.properties文件提供的interval属性。定期数据写入@组件中,我将其注入控制器以填充模型:

@Autowired
Results results;


@RequestMapping("/")
String exposeResults(ModelMap model) {

    model.addAttribute("errors", results.getErrorCount());
    model.addAttribute("warnings", results.getWarningCount());
    return "results";
}
模型数据通过一些基本的html/jsp显示。 当我开始学习SpringBoot的一些教程时,我正在使用FreeMarker,它有一些特定的FreeMarker启动程序

问题是我无法使自动重新加载的html(ftl)与更新的模型保持一致(它确实在控制台日志中得到更新,或者如果我手动刷新页面)

@Scheduled(fixedRate=…)
似乎不适用于用
@RequestMapping
注释的MVC方法,因为此类方法具有参数并返回非void。 我不考虑用jQuery Ajax来获取,因为我不知道如何将java属性作为一个常量,如JavaScript代码中的“代码”> StTealTimes(函数){ $(“y* DePaseRead”)。代码>。。。显然像
${polling.interval}
这样的占位符在这里不起作用。我错了吗

我必须承认,我曾试图实现“java.util.Observable Observer”对,但失败了

我觉得事情不应该那么复杂,如果有新的想法,我将不胜感激。 多谢各位

我迫切需要找到一种方法,定期调用带有@RequestMapping注释的方法

你为什么要这么做?!如果您仅从服务器调用客户端,它将处理服务器上客户端的请求,但不会更新客户端

setInterval(function(){$(“#displayarea”).load(url);},10000)

这正是您需要做的
${polling.interval}
是freemarker语法,它将从名为
polling
Map
或名为
polling
的对象的
interval
属性中检索
interval
键,因此您不需要仅使用
${interval}
就足够了。在您的freemarker模型中设置它,使用freemarker处理包含javascript的文件,就完成了

当然,有一些方法可以从服务器设置推送,例如,但对于您需要的,这将是一个过度的杀伤力

我迫切需要找到一种方法,定期调用带有@RequestMapping注释的方法

你为什么要这么做?!如果您仅从服务器调用客户端,它将处理服务器上客户端的请求,但不会更新客户端

setInterval(function(){$(“#displayarea”).load(url);},10000)

这正是您需要做的
${polling.interval}
是freemarker语法,它将从名为
polling
Map
或名为
polling
的对象的
interval
属性中检索
interval
键,因此您不需要仅使用
${interval}
就足够了。在您的freemarker模型中设置它,使用freemarker处理包含javascript的文件,就完成了


当然,有一些方法可以从服务器设置推送,例如,但对于您需要的内容,这将是一种过度的操作。

在“${polling.interval}”下,我指的是如何在Java中访问属性,如“@Value${polling.interval}”长间隔“如果属性文件看起来像“polling.interval=3000”-问题是如何从javascript访问这些属性抱歉,我不理解您的回答您的意思是我需要在我的项目中引入某种FreeMarker模型(Java)?您在问题中不断回答您的问题;)
@Value(${polling.interval}”)long interval
将从属性文件中设置值。您让我一直想知道您的意思是什么:)比如,如果我在类中标记为@Controller,那么字段
@Value(${polling.interval}”)long interval'-是否意味着它可以作为${polling.interval}访问可以像
setInterval(function(){$(“#displayarea”).load(url);},${polling.interval});`一样使用?不,这意味着Spring将把属性中的值注入这个字段
long interval
(如果一切都配置正确)。它将无法从JavaScript访问。您需要执行`model.addAttribute(“whatever”,interval);然后,它将可以在您的freemarker(ftl)模板中访问。在模板中,您可以执行setInterval(function(){$(“#displayarea”).load(url);},${which});然后freemarker将知道用10000或最初来自.properties文件的任何其他数字替换${whatever}。JavaScript只能看到10000个@安德烈姆。Stepanov@AndreyM.Stepanov另外,请看这是一个很好的说明。在“${polling.interval}”下,我指的是我们如何在Java中访问属性,比如“@Value${polling.interval}”长间隔“如果属性文件看起来像“polling.interval=3000”-问题是如何从javascript访问这些属性抱歉,我不理解您的回答您的意思是我需要在我的项目中引入某种FreeMarker模型(Java)?您在问题中不断回答您的问题;)
@Value(${polling.interval}”)long interval
将从属性文件中设置值。您让我一直想知道您的意思是什么:)比如,如果我在类中标记为@Controller,那么字段
@Value(${polling.interval}”)long interval'-是否意味着它可以作为${polling.interval}访问可以像
setInterval(function(){$(“#displayarea”).load(url);},${polling.interval});`一样使用?不,这意味着Spring将注入val