有没有办法从 JSF 中的应用程序范围的 bean 获取 Base URL?

Is there a way to get the Base URL from an Application-scoped bean in JSF?

在我的 JSF Facelets 页面中,我知道我可以只使用

#{request.requestURL}

获取完整的 URL 以构建可导出链接等。但是我有一个@ApplicationScoped bean,我需要基础URL(即“http://dnsname/app”)用于报告和其他数据。是否有标准方法访问网络应用程序容器以获取此信息?

直到第一个 HTTP 请求被触发。 domain/host/base 即完全独立于 Web 应用程序配置(在 appserver and/or 代理服务器上,如果有的话)。如果在第一个 HTTP 请求期间将其延迟设置为应用程序范围的变量不是一个选项,例如servlet request listener or a servlet filter 或者可能在该应用程序作用域 bean 的延迟加载 getter 中,那么您需要通过例如在 Web 应用程序外部配置它系统 属性、VM 参数、属性文件等