2013-03-18 1 views
0

http://www.cqblueprints.com/xwiki/bin/view/Blue+Prints/Writing+A+JSP+Custom+Tag+Library을 사용하여 사용자 정의 태그 라이브러리를 생성하여 내 사용자 정의 컴포넌트에서 XSS- 증명 링크를 생성합니다. 필자는 작업의 다른 부분을 수행하고 JSP 파일에 스크립틀릿을 작성하지 않아야하므로 태그로 가져 왔습니다 (코드를 마지막에 게시했습니다).사용자 정의 jsp Java 클래스에서 XSSAPI에 액세스하는 방법은 무엇입니까?

자바 클래스의 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

관련 문제