在实现NexusIndexHTMLCustomizer的类中获取HttpServletRequest对象

时间:2013-09-04 06:26:19

标签: nexus

我有像

这样的要求

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中获得这个对象吗?

1 个答案:

答案 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

提供了这些列表

如上所述,您可以在上述方法中使用该代码,从而可以访问请求。