Получение значения ключа из портлета отображения веб-контента
Я получил требование. Я добавил два текстовых поля Value
а также Key
из структуры в портлете отображения веб-контента.
Прямо сейчас в портлете я получаю значение из жесткого кода, как показано ниже.
BasicModel model = (BasicModel)requestContext.getFlowScope().get("BasicModel");
if(model == null){
model = new BasicModel();
}
model.setEmployeeId("AB1223344S");
model.setHireDate("01-Jan-2000");
model.setNiNumber("AB123456S");
model.setDateOfBirth("12-Dec-1980");
model.setBasicForm(new BasicDetailsForm());
}
но я хочу получить value
каждого attribute
от web content
, Как если бы я дал lfr.intel.empid
как key
а также ABSD1822D
в качестве значения в поле добавленной структуры веб-контента, как это.
и мы можем получить значение ключа, как это.
model.setEmployeeId(lfr.intel.empid);
2 ответа
Вы можете написать пользовательскую функцию для этого, которая передает ключ этой функции, теперь эта функция будет использовать API-интерфейс JournalArticleLocalServiceUtil для получения соответствующего значения из БД.
Теперь вам нужно найти Как получить значения из JournalArticleLocalServiceUtil, который вы можете Google или эта ссылка может помочь вам.
Благодарю.
Попробуйте это, предполагая, что вы можете получить JournalArticle
объект, я сделал это с помощью resourcePrimKey
long resourcePrimKey = 12345; //hard coded the resourcePrimKey
JournalArticle article = JournalArticleLocalServiceUtil.getLatestArticle(resourcePrimKey);
com.liferay.portal.kernel.xml.Document document = SAXReaderUtil.read(article.getContentByLocale("en_US"));
Node keyNode = document.selectSingleNode("/root/dynamic-element[@name='Key']/dynamic-content");
String key = keyNode.getStringValue();
Node valueNode = document.selectSingleNode("/root/dynamic-element[@name='Value']/dynamic-content");
String value = valueNode .getStringValue();