是否可以使用 Portlet 2.0 API 从 Portlet获取 Portal 基本 URL(如http://www.thisismyportal.com )?
现在我打算手动构建它并连接PorletRequest.getServerName()
,PortletRequest.getServerPort()
和PortletRequest.getContextPath()
; 但它似乎有点笨拙(而且没有PortletRequest.getProtocol()
)
是否可以使用 Portlet 2.0 API 从 Portlet获取 Portal 基本 URL(如http://www.thisismyportal.com )?
现在我打算手动构建它并连接PorletRequest.getServerName()
,PortletRequest.getServerPort()
和PortletRequest.getContextPath()
; 但它似乎有点笨拙(而且没有PortletRequest.getProtocol()
)
虽然笨拙,但它是构建 URL 的最安全方法;虽然没有PortletRequest.getProtocol()
方法,但您可以使用该方法得出协议PortletRequest.isSecure()
。
出于几个原因,我建议不要对基本 URL 使用外部配置。
首先,这将是您跨环境(测试、集成、生产等)维护的另一个配置项。几乎没有理由在配置中保留使用当前请求完全可重现的东西。
其次,在某些情况下,可能无法将特定 URL 指定为门户的“基本 URL”。例如,门户网站服务器与多个主机或多个主机别名相关联。
我们在 Resource Environment Provider 中有这些配置属性,目的是生成外部 URL,以便在电子邮件中发送它们。这是一个特定的解决方案,对我们来说不是问题,因为我们还在那里存储了其他属性,所以我们知道它将在运行时可用。我不知道这是否适合您的需求。这取决于你的场景。另外,我们只在登录时使用 https,所以我们总是生成 http URL。
希望这可以帮助。