QueryBuilder API를 사용하여 AEM의 특정 경로 아래에서 속성의 모든 값을 가져 오는 시나리오가 있습니다. 이 속성은 단일 또는 다중 값을 가질 수 있습니다. 도움이 될 것입니다 !!queryBuilder를 사용하여 aem의 특정 속성 값 모두 가져 오기
1
A
답변
1
쿼리 작성기 API를 사용하여 속성을 가져 오는 직접적인 방법은 없습니다. path
및 property
이름이 필요한 서블릿 자원을 작성하는 것이 좋습니다.
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 스크립틀릿에 기록 된 그림입니다 다음과 같습니다 아래 스크린 샷. 난 **이 ** 내용 경로의 목록 노드 결과 쿼리를 찾고 올바르게 이해한다면
? 또는 ** 특정 내용 경로 **에 대한 속성 값 만 검색하려면? 지금까지 AFAIK 쿼리 작성기는 특정 검색 일치에 대한 콘텐츠 경로를 검색하는 데 사용됩니다. – VAr