Настраиваемый шаблон sitemesh в decorator.xml

Можно ли добавить какой-нибудь настраиваемый параметр в decorator.xml? Мне нужно сделать что-то вроде:

<decorator name="sample" page="sample.jsp">
      <pattern>/sample.${my.own.ext}</pattern>
</decorator>

<decorator name="example" page="example.jsp">
      <pattern>/example.${my.own.ext}</pattern>          
</decorator> 

и в некоторый файл конфигурации mycfg.parameters положить:

my.own.ext = myhtm

так что его можно поменять на другой сервис

Есть ли какие-то решения для этого, кроме создания многих файлов decorator.xml для других служб?

1 ответ

Вы можете использовать фильтрацию ресурсов maven для замены параметра во время сборки в файлах decorator.xml.

В вашем файле maven pom.xml вы можете определить свойство / ресурсы следующим образом:

<project>
  ...
  <properties>
    <my.own.ext>html</my.own.ext>
  </properties>

  <resources>
    <resource>
      <directory>src/main/webapp</directory>
      <filtering>true</filtering>
      <includes>
        <include>WEB-INF/decorator.xml</include>
      </includes>
    </resource>
  <resources>
  ...
</project>

Вы можете сделать то же самое в Ant, если вы не используете Maven.

В качестве альтернативы вы можете использовать метод, описанный в разделе Конфигурация Sitemesh: Средний уровень, Сборка, чтобы настроить селектор декоратора с переменной свойства init-param / system во время выполнения. Например:

String extension = System.getProperty("extension");
javax.servlet.Filter filter = new SiteMeshFilterBuilder()
    .addDecoratorMapping("/sample." + extension, "/sample.jsp")
    .addDecoratorMapping("/example." + extension, "/example.jsp")
    .build();
Другие вопросы по тегам