gpt4 book ai didi

spring - 如何将 Spring Hatoas ControllerLinkBuilder 用于 Thymeleaf 模板化的预定电子邮件

转载 作者:行者123 更新时间:2023-12-03 16:38:35 26 4
gpt4 key购买 nike

我在 Boot 应用程序中使用 Spring Hateoas 以避免在 View 中手动创建链接。它在 Thymeleaf View 中工作得很好,当 Controller 调用服务发送同样由 Thymeleaf 呈现的电子邮件时,它会起作用。

创建链接的代码非常标准

this.readLink = linkTo(methodOn(PostController.class)
.readPost(eventId, postId))
.withRel("ReadPost");

但是对于 @Scheduled服务生成的电子邮件,它像这样失败
015-08-23 22:28:40.886 ERROR 1180 --- [pool-2-thread-1] o.s.s.s.TaskUtils$LoggingErrorHandler    : Unexpected error occurred in scheduled task.
java.lang.IllegalStateException: Could not find current request via RequestContextHolder. Is this being called from a Spring MVC handler?
at org.springframework.util.Assert.state(Assert.java:392) ~[spring-core-4.2.0.RELEASE.jar:4.2.0.RELEASE]
at org.springframework.hateoas.mvc.ControllerLinkBuilder.getCurrentRequest(ControllerLinkBuilder.java:242) ~[spring-hateoas-0.18.0.RELEASE.jar:na]
at org.springframework.hateoas.mvc.ControllerLinkBuilder.getBuilder(ControllerLinkBuilder.java:189) ~[spring-hateoas-0.18.0.RELEASE.jar:na]
at org.springframework.hateoas.mvc.ControllerLinkBuilderFactory.linkTo(ControllerLinkBuilderFactory.java:121) ~[spring-hateoas-0.18.0.RELEASE.jar:na]

我能做些什么来解决缺少 HttpServletRequest 的问题吗?由于代码作为 @Scheduled 运行工作?

最佳答案

ControllerLinkBuilder当前只能从请求中使用,因为只有允许它使用来自它的服务器和端口信息创建完全限定的链接。

@Scheduled -invoked 方法,该信息不可用。如果您提供有关您在该方法中实际创建的内容的更多信息,我可以建议解决方法。

关于spring - 如何将 Spring Hatoas ControllerLinkBuilder 用于 Thymeleaf 模板化的预定电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32171839/

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