Пользовательский механизм шаблонов для struts2

Я хочу создать собственный механизм шаблонов, такой как velocity или freemarker, который будет использоваться в приложении на основе struts 2. Почему я не хочу использовать какой-либо из доступных механизмов шаблонов, так это потому, что я хочу, чтобы HMTL оставался фиксированным и редактируемым с помощью dreamweaver, что означает отсутствие тегов struts или JSTL. Значения будут вводиться с помощью Xpath или простой строковой заменой значений существующих тегов HTML. Я требую:

простой HTML + некоторая конфигурация (свойства/xml) + данные =>

HTML, заполненный данными + некоторые динамически сгенерированные javascripts


person samarjit samanta    schedule 07.12.2010    source источник
comment
Как мне написать механизм шаблонов, такой как freemarker? Как интегрировать мой механизм шаблонов со struts2?   -  person samarjit samanta    schedule 08.12.2010


Ответы (1)


1) Определите пакет с именем вашего типа результата и классом, который будет вызываться, когда действие возвращает этот тип результата.

<package name="default" namespace="/" extends="struts-default">
  <result-types>
    <result-type name="myResultType" class="com.awesome.MyResult"/> 
  </result-types>
  .... actions and other things...
</package>

2) Реализуйте класс типа результата Struts 2:

package com.awesome;
public class MyResult extends StrutsResultSupport{
  //1) read the the target file
  //2) process/transform the target file
  //3) write out the transformed file as the result
} 

Это хорошо описано в «Разработке веб-приложений Apache Struts 2» Дэйва Ньютона. Я знаю, что приведенный выше класс не реализован, но я уверен, что вы можете найти здесь то, что вам нужно.

person Quaternion    schedule 16.12.2010
comment
Спасибо, я использую это сейчас. Для других, кто хочет использовать это, я могу дать вам несколько советов. Открытые стойки по умолчанию ищут перехватчики, реализующие классы FreemarkerResult.java и XSLTResult.java, — это два класса, которые я прочитал, и их довольно просто понять, что они делают. Я бы также рекомендовал пройти http://www.oracle.com/technetwork/java/filters-137243.html о java-фильтрах, особенно если вы хотите изменить ответ. Требуется HttpResponseWrapper. Существует еще одна вещь PreResultListener, которая может манипулировать объектом вызова непосредственно перед тем, как будет оцениваться результат. - person samarjit samanta; 21.12.2010