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

标签 spring spring-boot thymeleaf spring-hateoas

我在 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/

相关文章:

java - 如何在 Spring Boot 中单独修改 channel 内每个接收者的每个代理消息?

java - 有没有办法在 spring boot 应用程序中访问部署的 html 文件?

intellij-idea - 如何在 Spring Boot 1.3 中启用 Thymeleaf Live Reloading

java - 错误 : "java.sql.SQLSyntaxErrorException: Table ' db_example. 表'不存在”即使 Hibernate 说该表已创建

java - Camel RabbitMQ 默认 ConnectionFactory?

java - 调整类路径/更改azure databricks中的spring版本

java - Gradle 6 与 Intellij - 刷新失败

java - 如何在 Spring Boot 中更新单个表列而不更新其余属性?

javascript - 未捕获的类型错误 : Cannot read property '0' of undefined - in jqGrid Spring MVC

java - 尝试使用maven程序集插件时出现 "Assembly is incorrectly configured: null"