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 に答える