Play Framework (Java) 中没有 HTTP 上下文的绝对 URL

Absolute URLs in Play Framework (Java) with no HTTP context

在我们的 (Java) Play 应用程序中,我们有一个异步作业,当超过各种截止日期时,它会向用户发送电子邮件。这些电子邮件应该包含指向我们网站上相关页面的链接。但是,在这样的异步作业中,无法使用 routes.MyPage.myTemplate().absoluteURL() 创建绝对 URL,因为没有可用的 HTTP 上下文。

在 HTTP 上下文之外获取绝对 URL 的推荐模式是什么?对于测试,有人会 ,但我认为这不是生产中的正确方法?

play.mvc.Call 有多个版本的 absoluteUrl。有一个版本如下:

/**
 * Transform this call to an absolute URL.
 *
 * @param secure true if the absolute URL should use HTTPS protocol instead of HTTP
 * @param host the absolute URL's domain
 * @return the absolute URL string
 */
public String absoluteURL(boolean secure, String host)

您可以使用它来生成绝对 url 而无需请求。