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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выдача velocity-шаблонов через сервлет, сервлет не находит шаблоны 
V
    Опции темы
check
Дата 26.4.2008, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Так выглядит код сервлета
Код

public class FrontController extends HttpServlet {

    private ArrayList al = new ArrayList();


    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        String filePath = getServletContext().getRealPath("/test.vm");
        String output = null;
        try {
            output = DoVelo(filePath);
        }
        catch(Exception ex) {
             throw new RuntimeException(ex.getMessage());
        }
        out.print(output);
    }

        private void fillList()
    {
        al.add(new Product("Enlargement pills", 12.99f));
        al.add(new Product("English courses", 55.99f));
        al.add(new Product("Book - How to Lose Weight", 34.99f));
    }

    public String DoVelo(String file) throws Exception {
        fillList();
        StringWriter sw = new StringWriter();
        Velocity.init();
        Template t = Velocity.getTemplate(file);
        VelocityContext vc = new VelocityContext();
        vc.put("products", al);
        t.merge(vc, sw);
        return sw.getBuffer().toString();
    }



Ошибка: Unable to find resource 'C:\apache-tomcat-5.5.20\webapps\velo\test.vm'

getServletContext().getRealPath смотрит туда, куда нужно. Если искать таким образом, скажем, файл test.html, он находится.


Кроме самого velocity поключены velocity tools. Выдача шаблонов напрямую
(c помощью ViewServlet входящего в Velocity Tools) работает. 
Но я не понял(не нашёл в документации), как в этом случае я могу организовать добавление в VelocityContext того же 
ArrayList`а из примера выше. 

Запусается это всё на Томкате.

Это сообщение отредактировал(а) check - 26.4.2008, 08:52
PM MAIL   Вверх
Stampede
Дата 26.4.2008, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


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

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



Не надо указывать Velocity абсолютные пути к шаблонам. Это неудобно во всех отношениях. Лучше один раз задать в конфиге базу для всех шаблонов, а потом ссылаться на них просто по имени:

Код

...
resource.loader = file
file.resource.loader.class = org.apache.velocity.runtime.resource.loader.FileResourceLoader
file.resource.loader.path = C:\apache-tomcat-5.5.20\webapps\velo
...


Код

Template t = Velocity.getTemplate("test.vm"); // будет разрешен относительно базы шаблонов


Подробнее о конфиге пропертями - в Руководстве разработчика Velocity.

А еще рекомендую проштудировать тему JSP - с чего начать? - там вопросам конфигурации и запуска отведено особое место.


--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
check
Дата 26.4.2008, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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

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

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


 




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


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

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