2014-12-23 2 views
0

저는 Sling Launchpad를 시작하면서 셀렉터 등의 기본 개념을 파악하고 노드의 내용을 읽을 수있었습니다. 그러나 새 노드를 만드는 방법을 알 수 없습니다.Sling API를 사용하여 JSP 내에서 노드 만들기

웹 브라우저를 사용하여 액세스 할 때 올바르게 처리중인 JSP가 내 jackrabbit 저장소에 있습니다.

페이지로드시/content/myappname 트리에 새 노드를 작성하는 조치를 수행하려고합니다.

어떻게해야합니까? 코드에서 Session 객체를 생성하고 세션이 관리 사용자로 로그인 한 다음 노드 생성을 수행해야한다는 것을 알았습니다. 나는 그 범위에서 내가 사용할 수있는 것 중에서 어떤 물건을 사용해야할지 모른다.

JSP 내에서 노드를 만드는 방법에 대한 빠른 코드 예제를 제공 할 수 있습니까?

답변

1

SlingRepsitory 개체를 통해 관리자 ## 세션을 얻을 수 있습니다. 세션에서 잭 토끼 API를 사용하여 노드를 만들 수 있습니다.

<sling:defineObjects> 태그는 슬링 변수 (이 모든 변수를 나타내는 global.jsp을 포함 할 수 있음)를 나타냅니다. 슬링의 getService() 메소드를 사용하여 SlingRepository의 인스턴스를 얻을 수 있습니다.

##관리자 세션

org.apache.sling.jcr.api.SlingRepository repos = sling.getService(SlingRepository.class); javax.jcr.Session session = repos.loginAdministrative(null); javax.jcr.Node root = session.getRootNode(); javax.jcr.Node newNode = root.addNode('content/myappname/newnode'); 

는 일반적으로 서비스를 제공하는 번들에 사용하기위한 것입니다, 그것을 아껴서 사용하는 경우에만 absolutely necessary해야합니다. 그것은 단점은 인터넷에 잘 문서화되어 있으며 alternatives입니다. 가능한 경우 사용자 별 권한이있는 요청에서 세션을 가져 오는 것이 가장 좋습니다.

+0

loginAdministrative 사용은 보안 측면에서 위험하므로 다른 방법이없는 경우에만 사용해야합니다. Sling 요청을 처리하는 JSP 스크립트에서 Resource.adaptTo (Node.class) 메서드를 사용하여 JCR 노드를 가져올 수 있습니다.이 메서드는 현재 자원이 JCR 저장소에서 제공된 경우 JCR 노드를 반환합니다. 그런 다음 Node.getSession()을 사용하여 현재 요청의 자격 증명이있는 세션을 가져올 수 있으며 loginAdministrative처럼 권한을 에스컬레이션하지 않습니다. –

관련 문제