EntityModel (Java, DXA 2.0) listesini almanın verimli yolu
Oct 28 2020
Varlıkları belirli kriterlere göre sorgulayan bir sayfamız var.
Bunu uygulama şeklimiz, varlık kimlikleri listesini almak, kimlikleri döngüye almak, kimlik başına varlık modelini almak ve listeye eklemektir.
Sözde kod:
Query query = new Query(...);
// Get list of ids from query
List<String> ids = Arrays.asList(query.executeQuery());
final WebComponentMetaFactory cmf = new WebComponentMetaFactoryImpl(brokerQuery.getPublicationId());
// Get component meta
List<ComponentMeta> componentMetas = ids.stream().map(cmf::getMeta)
.collect(Collectors.toList());
// Get entity model per component and add it to the list
componentMetas.forEach(meta -> {
EntityModel entityModel = contentProvider.getEntityModel(meta.getId() + templateId, webRequestContext.getLocalization())
list.add(entityModel)
});
Bu işe yarıyor, ancak performans açısından çok yavaştır çünkü contentProvider.getEntityModel(...)her kimliği çağırması gerekir .
Bunun için daha iyi bir çözüm var mı? Belki de EntityModel listesini oluşturan DXA'dan bir API?
Yanıtlar
Velmurugan Nov 03 2020 at 06:06
Aşağıda verilen tek bir çağrı örneğiyle birden çok DCP içeriğini almak için aşağıdaki CIL API'sini kullanın, java'da da bulunan .NET benzeri API'ye dayanmaktadır.
string[] componentUris = query.ExecuteQuery();
var components =
componentUris
.Select(componentUri => { TcmUri uri = new TcmUri(componentUri); return (ComponentPresentation)new ComponentPresentationFactory(uri.PublicationId).FindAllComponentPresentations(componentUri)[0]; })
.Where(cp => cp != null)
.Select(cp => cp.Content)
.ToList();
Umut ediyorum bu yardım eder.
Donovan, Şarkılarından 1'ini The Beatles'ın "Lucy in the Sky with Diamonds" şarkısıyla karşılaştırdı
Nicole Kidman, Michael Keaton ve Val Kilmer'in Batman Olarak Paylaştığı Bu 1 Çekici Özelliğe Bayıldı
Kevin Jonas'ın Kızı Alena, Doğum Günü Fotoğrafında Büyümüş Görünüyor: '9 Yaşında Gerçek Hissetmiyor'
Charly Reynolds Yakın Zamandaki Vokal Kord Ameliyatını Açıkladı: 'Şarkı Söylemekte Sorun Yaşıyordum'