2017-03-07 6 views
1

QueryBuilder API를 사용하여 AEM의 특정 경로 아래에서 속성의 모든 값을 가져 오는 시나리오가 있습니다. 이 속성은 단일 또는 다중 값을 가질 수 있습니다. 도움이 될 것입니다 !!queryBuilder를 사용하여 aem의 특정 속성 값 모두 가져 오기

+1

? 또는 ** 특정 내용 경로 **에 대한 속성 값 만 검색하려면? 지금까지 AFAIK 쿼리 작성기는 특정 검색 일치에 대한 콘텐츠 경로를 검색하는 데 사용됩니다. – VAr

답변

1

쿼리 작성기 API를 사용하여 속성을 가져 오는 직접적인 방법은 없습니다. pathproperty 이름이 필요한 서블릿 자원을 작성하는 것이 좋습니다.

QueryBuilder을 통해 지정된 경로를 사용하여 jcr 노드를 가져옵니다. 그런 다음 결과를 루프하여 노드의 등록 정보를 확인해야합니다. 노드가 있으면 여러 속성 값에 액세스 할 수 있습니다.

4

도움이 될만한 예입니다. 그냥 같이 내가 당신에게 하나의 조합을 구성 /content/geometrixx-outdoors/ 경로에서 imageRotate 속성과 일치 쿼리 결과를 줄 수있는 이는 Iterator<Resource> iter = resourceResolver.findResources(query,"xpath");을 사용하고 다중 한

다음
<% 
Iterator<Resource> iter = resourceResolver.findResources("/jcr:root/content/geometrixx-outdoors//element(*, nt:unstructured)[(@imageRotate = '0' or @imageRotate = '1')]","xpath"); 
while (iter.hasNext()) { 
    Resource child = iter.next(); 
    out.println("</br>"+child.getPath()); 
    Node node = child.adaptTo(Node.class); 
    Property nProp = node.getProperty("imageRotate"); 

if(nProp.isMultiple()) // This condition checks for properties whose type is String[](String array) 
     { 
Value[] values = nProp.getValues(); 
    out.println(" :: This is a multi valued property ::"); 
    for (Value v : values) { 
     out.println("</br>"+"Property Name = "+nProp.getName()+" ; Property Value= "+v.getString()); 
    } 
     } 
     else if(!nProp.getDefinition().isMultiple()){ 
      out.println("</br>"+"Property Name = "+nProp.getName()+" ; Property Value= "+nProp.getString()); 
     } 
} 
%> 

간단한 JSP 스크립틀릿에 기록 된 그림입니다 다음과 같습니다 아래 스크린 샷. 난 **이 ** 내용 경로의 목록 노드 결과 쿼리를 찾고 올바르게 이해한다면

CRX Node