0

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

我想使用我的 Java 类中的 XSSAPI,但是查看XSSAPI 的 javadoc我发现它是一个接口;在 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

1 回答 1

4

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

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

然后你可以使用

@Reference
XSSAPI xssapi;

拉入 XSSAPI 的实现。然后你就可以使用它了

xssapi.getRequestSpecificAPI(slingRequest);
于 2013-03-18T20:40:54.887 回答