我想知道如何从 Surf 中的根对象中知道当前主机名。
我正在编写一个服务于 JNLP 的 webscript,所以我没有页面上下文,并且${url.context}
只返回/share
.
我正在寻找如何获得主机名http://foobar.com
,或者是否可以从服务器端获得主机名。
我已经通过:http ://wiki.alfresco.com/wiki/Surf_Platform_-_Freemarker_Template_and_JavaScript_API#没有成功
在存储库方面,Alfresco 和 Share 的 URL 是已知的。您可以从SysAdminParams获取所有单独的部分,并且可以使用UrlUtils将不同的部分连接在一起,以便提供完整的 URL。
但据我所知,这些细节只保存在 Alfresco 存储库层,永远不会传递给 Share。Share 中的所有绝对 URL 似乎都是在 Repo 中生成并发送过来的
然后,一种选择是让您将 webscript 更改为 repo webscript 而不是共享 webscript。这将使您可以访问适当的 bean。Share 将为您代理 Repo webscripts,因此您仍然可以以登录用户的身份直接在 Share 中访问它。您需要一个有点像/share/proxy/alfresco/my/web/script
访问它们的 URL。
否则,创建一个公开 SysAdminParams 和共享 URL 的有用位的新 repo webscript,并让您的共享 webscript 获取它(可能使用缓存)。也有很多这样的例子可以使用。
你有没有尝试过${url.serverPath}
或者你可以使用默认的 alfresco-global.properties 像
share.context=share
share.host=foobar.com
share.port=80
share.protocol=http
这些属性可以在任何你想要的地方注入,看这里:Accessing values from Alfresco's alfresco-global.properties file
您唯一需要注意的是,这些属性与存储库相关。因此,您可以编写一个 repo webscript,它将所有道具提供给 Share。
而且由于您使用的是 Share,因此可以轻松地使用客户端 JavaScript 来确定主机;)。