powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Velocity и константы Java
6 сообщений из 6, страница 1 из 1
Velocity и константы Java
    #37695207
alexander00513
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток всем. Есть web приложение на spring, для составляющей view я использую jsp. В jsp страницу я импортирую константы с url:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public interface Url {
    public final static String INDEX_URL =              "/";
    public final static String DELETE_URL =             "delete";
   
    public final static String EMPLOYEE_CREATE_URL =    "employee/create";
    public final static String EMPLOYEE_READ_URL =      "employee/read";
    public final static String EMPLOYEE_UPDATE_URL =    "employee/update";
    
    public final static String DIVISION_LIST_URL =      "division";
    public final static String DIVISION_CREATE_URL =    "create";
    public final static String DIVISION_READ_URL =      "read";
    public final static String DIVISION_UPDATE_URL =    "update";
}


Импортирую вот так:
Код: sql
1.
<%@page import="static com.hornsandhooves.common.tools.Url.*"%>


В этом случае всё отлично работает. Но возникла задача использовать в приложении шаблонизатор - Velocity. И вот как теперь передавать туда константы правильно - не знаю. Официальная документация мне к сожалению не помогла. Есть идея возвращать эти константы контроллером с помощью ModelAndView() на страницу, но в этом случае нужно править все контроллеры, а это на мой взгляд не рационально... Подскажите - есть ли способ при инициализации Velocity каким нибудь образом указать на java классы и интерфейсы, что бы на страницы к ним можно было обращаться. За ранее спасибо.
...
Рейтинг: 0 / 0
Velocity и константы Java
    #37695225
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Velocity и константы Java
    #37695891
alexander00513
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, попробую, может кто то подскажет как добавить всё это в контекст velocity?
...
Рейтинг: 0 / 0
Velocity и константы Java
    #37696775
Большой Синий Кит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexander00513,

Я не работал с велосити. Но как раз накануне на текущем проекте, высоконагруженном, было решено отказать от велосити - в силу того, что он медленный :) Все компоненты были переписаны. Сам не тестировал, продаю за то, что купил.
...
Рейтинг: 0 / 0
Velocity и константы Java
    #37696885
JЧайник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я cделал так.
1.coздал класс менеджера шаблонов. его метод merge пинимает имя шаблона и контекст velicity

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
public class TemplateManager {
    
    private VelocityEngine engine = new VelocityEngine();
	private Properties props = new Properties();
           private encoding="UTF-8";
	
    public void init() {
    	props.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH, homeDir);
    	props.setProperty(Velocity.INPUT_ENCODING, encoding);
    	props.setProperty(Velocity.OUTPUT_ENCODING, encoding);
    	engine.init(props);

    }
    public String merge(String templateName, VelocityContext context) {
        try {
            StringWriter sw = new StringWriter();
            engine.getTemplate(templateName).merge(context, sw);
            return sw.getBuffer().toString();
        } catch (Exception err) {
            throw new RuntimeException(err);
        }
    }
    public void destroy() {
        engine = null;
    }
}



2. в сервлете по урл определяю нужный шаблон для страницы,
создаю контекст velocity и загоняю в него нужные переменные.
Потом передаю шаблон и контекст в merge(String template, VelocityContext context).

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
...
                page.put("pager", pager);
...
                page.put("pubs", publist);
...
                String templateName = page.getTemplateName();
                String html = myapp.getTemplateManager().merge(templateName, page);
                Writer writer = response.getWriter();
                writer.write(html);
                writer.flush();
...



класс Page:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
public class Page extends VelocityContext {
    private HttpServletRequest request;
    private HttpServletResponse response;
    private String templateName = "template.vm";
...
    public Page(HttpServletRequest request, HttpServletResponse response) {
        this.request = request;
        this.response = response;
        put("request", request);
        put("response", response);
        put("url", request.getRequestURI());
    }

    public void setTemplateName(String templateName) {
        this.templateName = templateName;
    }

    public String getTemplateName() {
        return templateName;
    }

}



посмотрите исходники apache click
он использует велосити
...
Рейтинг: 0 / 0
Velocity и константы Java
    #37699271
alexander00513
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался. Сделал вот так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
    <bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
        <property name="cache" value="true"/>
        <property name="prefix" value=""/>
        <property name="suffix" value=".vsl"/>
        <property name="contentType" value="text/html;charset=UTF-8" />
        <property name="exposeSpringMacroHelpers" value="true" />
        <property name="attributesMap">
            <map>
                <entry key="url"><bean class="com.hornsandhooves.common.tools.Url" /></entry>
                <entry key="command"><bean class="com.hornsandhooves.common.tools.Command" /></entry>
            </map>
        </property>
    </bean>



Url:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
public class Url {
    
    public final static String INDEX_URL =              "/";
    public final static String DELETE_URL =             "delete";
   
    public final static String EMPLOYEE_CREATE_URL =    "employee/create";
    public final static String EMPLOYEE_READ_URL =      "employee/read";
    public final static String EMPLOYEE_UPDATE_URL =    "employee/update";
    
    public final static String DIVISION_LIST_URL =      "division";
    public final static String DIVISION_CREATE_URL =    "create";
    public final static String DIVISION_READ_URL =      "read";
    public final static String DIVISION_UPDATE_URL =    "update";

    public static String getDELETE_URL() {
        return DELETE_URL;
    }

    public static String getDIVISION_CREATE_URL() {
        return DIVISION_CREATE_URL;
    }

    public static String getDIVISION_LIST_URL() {
        return DIVISION_LIST_URL;
    }

    public static String getDIVISION_READ_URL() {
        return DIVISION_READ_URL;
    }

    public static String getDIVISION_UPDATE_URL() {
        return DIVISION_UPDATE_URL;
    }

    public static String getEMPLOYEE_CREATE_URL() {
        return EMPLOYEE_CREATE_URL;
    }

    public static String getEMPLOYEE_READ_URL() {
        return EMPLOYEE_READ_URL;
    }

    public static String getEMPLOYEE_UPDATE_URL() {
        return EMPLOYEE_UPDATE_URL;
    }

    public static String getINDEX_URL() {
        return INDEX_URL;
    }
}



Command:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
public class Command {
    
    public final static String SEARCH_COMMAND = "searchForm";
    
    public final static String EMPLOYEE_CREATE_COMMAND = "employeeCreateForm";
    public final static String EMPLOYEE_UPDATE_COMMAND = "employeeUpdateForm";
    
    public final static String DIVISION_CREATE_COMMAND = "divisionCreateForm";
    public final static String DIVISION_UPDATE_COMMAND = "divisionUpdateForm";

    public static String getDIVISION_CREATE_COMMAND() {
        return DIVISION_CREATE_COMMAND;
    }

    public static String getDIVISION_UPDATE_COMMAND() {
        return DIVISION_UPDATE_COMMAND;
    }

    public static String getEMPLOYEE_CREATE_COMMAND() {
        return EMPLOYEE_CREATE_COMMAND;
    }

    public static String getEMPLOYEE_UPDATE_COMMAND() {
        return EMPLOYEE_UPDATE_COMMAND;
    }

    public static String getSEARCH_COMMAND() {
        return SEARCH_COMMAND;
    }
}
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Velocity и константы Java
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]