2015-12-17 6 views
0

Я ищу для оказания конкретного содержания в Magnolia, как компоненты с Render Engine Так что я нашел эту тему на StackOverflow: Programatically render template area in Magnolia CMSProgramatically визуализации область шаблона в Magnolia CMS

Мой вопрос о структуре следующих классов: FilteringAppendableWrapper и FakeResponse: используется для подделки Http Response в AppendableFilteringResponseOutputProvider

Спасибо за любую помощь.

ответ

0

Как насчет того, что вы хотите спросить? Почему он не использовал реальный ответ? Потому что он прикладывал целую (веб-) просьбу к странице, а затем получал выход из своего «FakeResponse» и добавлял ее в массив json, чтобы заполнить тело ответа запроса, который пришел на REST.
Лично я считаю, что такое решение является излишним для работы, и если бы я должен был сделать то же самое, я бы, вероятно, просто зарегистрировал шаблон вариации для компонента или всей страницы и при запросе страницы с помощью, например, Расширение .ajax. Я хотел бы иметь возможность отклонить и отобразить всю страницу (или область или компонент) в виде json-массива.

НТНА,
Jan

+0

Не могли бы вы объяснить, что такое шаблон вариации, и если можно привести пример. Я новичок в Магнолии и спасибо. –

+0

Эй, ты имел в виду что-то вроде этого! Session session = MgnlContext.getJCRSession ("website"); \t \t \t Содержание узла = session.getNode ("/ protoTest/content/02"); \t \t \t componentDefinition = templateDefinitionAssignment.getAssignedTemplateDefinition (content); \t \t \t OutputStream outputStream = new ByteArrayOutputStream(); \t \t \t OutputStreamWriter writer = новый OutputStreamWriter (outputStream); \t \t \t renderingEngine.render (content, componentDefinition, new HashMap (), new AppendableOnlyOutputProvider (writer)); –

+0

Нет, это не то, что я имел в виду. Магнолия позволяет вам определять несколько определений шаблонов для одного и того же контента, а затем на основе, например, с которым вы запрашиваете ресурс, вы можете контролировать, в каком формате этот ресурс будет отображаться. Подробнее см. Https://documentation.magnolia-cms.com/display/DOCS53/Configuring+variations+in+a+page+template. – Jan

0

Там нет необходимости поддельного ответа. Этот простой код хорошо работает:

 Session session = MgnlContext.getJCRSession("website"); 

     Node content = session.getNode("/protoTest/content/01"); 

     componentDefinition = templateDefinitionAssignment.getAssignedTemplateDefinition(content); 

     OutputStream outputStream = new ByteArrayOutputStream(); 

     OutputStreamWriter writer = new OutputStreamWriter(outputStream); 

     appendable = new AppendableOnlyOutputProvider(writer); 

     renderingEngine.render(content, componentDefinition, new HashMap<String, Object>(), appendable); 

     ((Writer) appendable.getAppendable()).flush(); 

     System.out.println(outputStream.toString()); 

 Смежные вопросы

  • Нет связанных вопросов^_^