2013-03-18 45 views
0

我正在使用http://www.cqblueprints.com/xwiki/bin/view/Blue+Prints/Writing+A+JSP+Custom+Tag+Library創建自定義標記庫,以從我的自定義組件中生成XSS驗證鏈接。我已經把它帶到了一個標籤,因爲我需要做其他工作,並避免在JSP文件上編寫scriptlet(我已經在最後發佈了代碼)。如何從定製jsp Java類訪問XSSAPI?

我想從我的Java類使用XSSAPI,但看着javadoc for XSSAPI我看到它是一個接口;當在JSP文件中使用它時,它是一個初始化的對象,調用<cq:defineObjects/>

有沒有人有關於如何做到這一點的任何想法? XSSAPI類中有一個名爲getRequestSpecificAPI(slingRequest)的方法,但它不是靜態的,我現在已經用完了想法。

@JspTag 
public class FixInternalLinkTag extends CqSimpleTagSupport { 

    private String pathToPage; 

    @Override 
    public void doTag() throws JspException, IOException {  

     XSSAPI xssAPI; // ToDo how to get a reference to this? 
     urlPointingToPage = xssAPI.getValidHref(urlPointingToPage); 

     getJspWriter().write(urlPointingToPage); 
    } 

    public String getPathToPage() { 
     return pathToPage; 
    } 

    @JspTagAttribute(required = true, rtexprvalue = true) 
    public void setPathToPage(String pathToPage) { 
     this.pathToPage = pathToPage; 
    } 
} 

回答

4

如果你讓你的標籤種類OSGi服務

@Component(immediate = true, metatype = true, description = "User Group Finder") 
@Service 
public class MyClass { ... 

然後你可以使用

@Reference 
XSSAPI xssapi; 

在XSSAPI實施拉。那麼你可以使用它

xssapi.getRequestSpecificAPI(slingRequest); 
+0

謝謝,這工作。我對CQ還是有點新意的,需要做很多關於服務和OSGI的閱讀! – blanquish 2013-03-19 00:08:30