To achieve my question above, I used querybuilder that retrieves custom pages and then I map these maps to a model file.
My problem is that in some instances, there are pages without this custom property (as an example, let's call it aNew which can be either true or false and of boolean property).
My issue is that when I "cast" the search result hits to my model, aNew automatically get "false" for pages that doesn't have this property.
Any ideas how it can be done?
Map<String, String> map = new HashMap<>();
map.put("path", "/content/data/fishes");
map.put("type", "cq:Page");
map.put("p.limit", "1");
QueryBuilder builder = getResourceResolver().adaptTo(QueryBuilder.class);
Query query = builder.createQuery(PredicateGroup.create(map), getResourceResolver().adaptTo(Session.class));
SearchResult searchResult = query.getResult();
if (searchResult.getTotalMatches() > 0) {
List<Hit> hits = searchResult.getHits();
Resource resource = hits.get(0).getResource();
Course tempCourse = resource.adaptTo(Course.class);
}
Solved! Go to Solution.
Views
Replies
Total Likes
Convert to node and then invoke the method hasProperty - Node (Content Repository for Java Technology API Version 2.0)
This will tell you if the page has the custom property.
Views
Replies
Total Likes
Query builder never modifies the JCR content
What do you mean by "Cast"?
false property would exists before executing the query.
Views
Replies
Total Likes
You can add a default value to the property in the Course sling model which will be returned if the property is not present.
@ValueMapValue
@Default(booleanValues = true)
boolean aNew;
Views
Replies
Total Likes
Convert to node and then invoke the method hasProperty - Node (Content Repository for Java Technology API Version 2.0)
This will tell you if the page has the custom property.
Views
Replies
Total Likes
Views
Likes
Replies