如何从自定义jsp Java类访问XSSAPI?

时间:2013-03-18 04:49:12

标签: cq5

我正在使用http://www.cqblueprints.com/xwiki/bin/view/Blue+Prints/Writing+A+JSP+Custom+Tag+Library创建自定义标记库,以便从我的自定义组件生成XSS-proof链接。我把它带到了一个标签,因为我需要做其他工作并避免在JSP文件上编写scriptlet(我已经在最后发布了代码)。

我想从我的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;
    } 
}

1 个答案:

答案 0 :(得分:4)

如果您将标记类设置为osgi服务

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

然后你可以使用

@Reference
XSSAPI xssapi;

引入XSSAPI的实现。然后你可以使用它

xssapi.getRequestSpecificAPI(slingRequest);