Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> velocity, Кто-то использует в web проектах? 
:(
    Опции темы
sandello
Дата 3.11.2005, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 18.5.2005
Где: Пермь

Репутация: нет
Всего: 2



Попытался запустить.

На текущий момент не понял, куда нужно положить (относительно корня war'а) файлы с шаблонами и как потом на них ссылаться. Методов создания Template по Reader'у или Stream'у не обнаружил.

Сразу скажу, что впервые занялся веб программированием.




--------------------
user posted image
PM MAIL Jabber   Вверх
pvo
Дата 3.11.2005, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 7.10.2005
Где: Мск

Репутация: 5
Всего: 7



Я использую. Есть файл velocity.properties. В нем есть раздел c с настройками загрузчика шаблонов:
Код

#----------------------------------------------------------------------------
# T E M P L A T E  L O A D E R S
#----------------------------------------------------------------------------
template.loader.1.public.name = File
template.loader.1.description = Velocity File Template Loader
template.loader.1.class = org.apache.velocity.runtime.loader.FileTemplateLoader
[b]template.loader.1.template.path = .[/b]
template.loader.1.cache = false
template.loader.1.modificationCheckInterval = 2


Сами шаблоны лежат у меня в WEB-INF/templates.

Для выполнения merge шаблона используется примерно такой код:

Код

    private String getPart( IEvent event, Principal principal, String postfix) 
    throws SubscriptionServiceError 
    {

        String templateName = getTemplateName( event, postfix ); // templateName = "WEB-INF/templates/myTemplate";
        VelocityContext context = getContext( event, principal );
        StringWriter sw = new StringWriter( 512 );
        try {
            boolean result = Velocity.mergeTemplate( templateName, "Cp1251", context, sw);
            if ( !result ) {
                throw new SubscriptionServiceError("Unable to generate " +
                        postfix + " for message");
            }
            return sw.toString();
        } catch ( Exception ex ) {
            throw new SubscriptionServiceError(
                    "Unable to generate " + postfix +  " for message",
                    ex );
        }
}

PM MAIL ICQ   Вверх
sandello
Дата 15.11.2005, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 18.5.2005
Где: Пермь

Репутация: нет
Всего: 2



Я пробую следующее:
Код

  protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
      throws javax.servlet.ServletException, IOException {
    String encoding="utf-8";


    response.setContentType("text/html; charset=" + encoding);

    try{
      Properties p=new Properties();
//      p.put("input.encoding",encoding);
      p.put("runtime.log","/tmp/velocity.log");
      p.put("input.encoding", "UTF-8");
      p.put("template.loader.1.template.path", "./");
      p.put("template.loader.1.public.name", "File");
      p.put("template.loader.1.description", "Velocity File Template Loader");
      p.put("template.loader.1.class", "org.apache.velocity.runtime.loader.FileTemplateLoader");
      p.put("template.loader.1.cache", "false");
      p.put("template.loader.1.modificationCheckInterval", "2");
      Velocity.init(p);
      VelocityContext vc=new VelocityContext();

      vc.put("article_title", "Проба пера с Velocity");
      vc.put("article_author", "вАлшеПниГ");
      vc.put("article_dateCreated", "2005-11-02");
      vc.put("article_text",
          "Это проба пера. Надеюсь, все получится и в дальнейшем будем применять этот шаблонный framefork от Apache");

      Template t=Velocity.getTemplate("WEB-INF/MainApp.vt");
      BufferedWriter bw=new BufferedWriter(response.getWriter());
      t.merge(vc, bw);
      bw.flush();
      bw.close();
    } catch(Exception e){
      PrintWriter out=response.getWriter();
      out.println("<html>");
      out.println("<head><title>Hello Servlet</title></head>");
      out.println("<body>");
 
      e.printStackTrace(out);
      out.println("</body></html>");
      out.close();
    }

  }


В результате получаю на странице:
Код

org.apache.velocity.exception.ResourceNotFoundException: Unable to find resource 'WEB-INF/MainApp.vt' 
at org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(ResourceManagerImpl.java:458) 
at org.apache.velocity.runtime.resource.ResourceManagerImpl.getResource(ResourceManagerImpl.java:341) 
at org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:831) 
at org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:813) 
at org.apache.velocity.runtime.RuntimeSingleton.getTemplate(RuntimeSingleton.java:285) 
at org.apache.velocity.app.Velocity.getTemplate(Velocity.java:469) 
at com.uralcom.ims.web.servlet.MainApp.doGet(MainApp.java:54) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:697) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) 
at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:39) 
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:159) 
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:59) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) 
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) 
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744) 
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) 
at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112) 
at java.lang.Thread.run(Thread.java:595) 


$ jar -t < ims.ear
META-INF/MANIFEST.MF
ims-web.war
META-INF/application.xml

$ jar -t < ims-web.war
...
WEB-INF/
WEB-INF/MainApp.vt
...
Добавлено @ 11:31
Попытка вывести свойство "user.dir" выдало $JBOSS/bin
Посему следует вопрос: как в jsp контейнере узнать рабочий каталог war приложения?

Это сообщение отредактировал(а) sandello - 15.11.2005, 11:26


--------------------
user posted image
PM MAIL Jabber   Вверх
Stampede
Дата 15.11.2005, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 66
Всего: 144



sandello, ты не указал, от какого места Velocity должен отсчитывать относительный путь к шаблону:

Код

  String path = getServletContext().getRealPath("WEB-INF/templates");
  p.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH, path);


А вообще, прочитай внимательно документ Velocity Developer Guide - тогда не придется тыкаться вслепую smile
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0684 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.