我正在使用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;
}
}
答案 0 :(得分:4)
如果您将标记类设置为osgi服务
@Component(immediate = true, metatype = true, description = "User Group Finder")
@Service
public class MyClass { ...
然后你可以使用
@Reference
XSSAPI xssapi;
引入XSSAPI的实现。然后你可以使用它
xssapi.getRequestSpecificAPI(slingRequest);