When using multiple Web Content (aka JournalArticle) structures in Liferay managing their corresponding IDs via configuration files can become a tedious task. Luckily, there is an easy way to determine structure IDs dynamically based on their title, like the following code snippet demonstrates:
private static String STRUCTUREID = null;
private String getStructureId() {
try {
if (STRUCTUREID != null) {
return STRUCTUREID; // already set
}
DynamicQuery dynamicQuery = DynamicQueryFactoryUtil.forClass(
JournalStructure.class).add(PropertyFactoryUtil.forName("name").like(
"%\">Your Structure Title</>%"));
@SuppressWarnings("unchecked") //optional
List<JournalStructure> structures = JournalStructureLocalServiceUtil.
dynamicQuery(dynamicQuery, 0, 1);
if (structures.size() < 1) {
System.out.println("No structure found");
return null;
}
STRUCTUREID = structures.get(0).getStructureId();
System.out.println("Structure ID=" + STRUCTUREID);
return STRUCTUREID;
} catch (SystemException e) {
e.printStackTrace();
return null;
}
}

Leave a Reply