我有像
这样的要求1)在现有的nexus oss最顶层面板和网址上方附上一个iframe 必须使用url参数生成该iframe的源代码 作为查询参数进入。所以我创建了一个java类来生成 给出HttpServeletRequest对象时的源URL。一旦我得到了 url我可以将它分配给变量并在javascript中替换源URL。
所以我打算做的是,
public class CtfButtonBar implements NexusIndexHtmlCustomizer {
.
.
.
@ Override
public String getPostBodyContribution( Map<String, Object> context )
{
return "<script>jQuery(window).load(function ()
{jQuery('body').find('div:first').prepend('<iframe id=\"myframe\" src=\" "
+ source url +
"" > </iframe>')});</script>";
}
在上面的“source url”变量中,这将是我的源属性 iframe需要从HttpServeletRequest对象生成。所以 基本上我需要这个类里面的HttpServeletRequest对象。在那儿 我可以在这个类CtfButtonBar中获得这个对象吗?
答案 0 :(得分:1)
我和开发人员讨论了这个问题并得到了一些黑客作为解决方案。以下是建议
final Request current = Request.getCurrent();
final Reference ref = current.getRootRef() or current.getResourceRef()
这使用Restlet,因为Nexus UI是通过Restlet呈现的,所以它应该可以工作 - 至少只要Nexus UI使用Restlet就可以了。
您的插件应该依赖于nexus-restlet1x-plugin,其版本与您使用的Nexus版本相同。中央通过http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.sonatype.nexus.plugins%22%20AND%20a%3A%22nexus-restlet1x-plugin%22
提供了这些列表如上所述,您可以在上述方法中使用该代码,从而可以访问请求。