powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / хранить jspFragment между запросами
25 сообщений из 25, страница 1 из 1
хранить jspFragment между запросами
    #37995153
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в custom tage есть jspFragment (getJspBody()) - отвечает за генерацию тела тега.
хочется его сохранить где-нибудь глобально, чтобы вызывать при необходимости. самый простой способ - сохранить его в Map чреват утечками (выглядит так что jspFragment создается в момент запроса).

кто-нибудь может подсказать что-нибудь в этом направлении?

Скажи микрософту прощай
...
Рейтинг: 0 / 0
хранить jspFragment между запросами
    #37995204
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какими ещё утечками? Привяжите Map к контексту или самой JSP.
...
Рейтинг: 0 / 0
хранить jspFragment между запросами
    #37995209
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczКакими ещё утечками? Привяжите Map к контексту или самой JSP.

к контексту чего? я в теге нахожусь, у меня нет страницы. и вызывать потом фрагмент я хочу в независимости от страницы (например, аяксом получить фрагмент, генерируемый тегом)
...
Рейтинг: 0 / 0
хранить jspFragment между запросами
    #37995214
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczКакими ещё утечками? Привяжите Map к контексту или самой JSP.

а утечки понятны, я сослался на страницу, потом обновил jsp - старый код соответственно не удалился
...
Рейтинг: 0 / 0
хранить jspFragment между запросами
    #37995221
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Penkov Vladimirк контексту чего?

http://docs.oracle.com/javaee/5/api/javax/servlet/ServletConfig.html
http://docs.oracle.com/javaee/5/api/javax/servlet/ServletContext.html


Penkov Vladimirя в теге нахожусь, у меня нет страницы. и вызывать потом фрагмент я хочу в независимости от страницы (например, аяксом получить фрагмент, генерируемый тегом)
Через ThreadLocal туда можно что угодно пропихнуть. Причем во многих фреймверках вроде Spring MVC это реализовано разными утилитами.
...
Рейтинг: 0 / 0
хранить jspFragment между запросами
    #37995230
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Penkov Vladimirа утечки понятны, я сослался на страницу, потом обновил jsp - старый код соответственно не удалился
Нифига не понялю. Зачем "куску" ссылка на страницу. Наоборот ведь нужно. На странице\сервлете получить ссылку на "кусок".
В любом случае, если это данные юзера, то через ThreadLocal пропихиваете Request и храните в сессии.
Если это данные приложения, то ServletConfig->ServletContext.
Можно просто глобальный Map завести и чистить в ServletContextListener. Почему Map это у вас обязательно "утечка", я всё ещё не понял.
...
Рейтинг: 0 / 0
хранить jspFragment между запросами
    #37995270
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Penkov Vladimir,

Может я не прав, поправьте. Но тело просто оформляется в метод, который можно вызывать несколько раз, зачем его хранить?
...
Рейтинг: 0 / 0
хранить jspFragment между запросами
    #37995284
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в JspFragment самом может храниться ссылка на сгенерированный класс jsp-сервлета.
...
Рейтинг: 0 / 0
хранить jspFragment между запросами
    #37995298
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0FDPenkov Vladimir,

Может я не прав, поправьте. Но тело просто оформляется в метод, который можно вызывать несколько раз, зачем его хранить?

проблема в том, что этот метод доступен только когда тег вызывается при построении страницы. а я хочу вдобавок уметь строить его вне страницы.

пример

a.jsp
[src]
<div id='s1'>
<tag:sample id='globalId'>foo=#{foo.value}<tag:sample>
</div>
[src]


теперь чтобы мне получить строку "foo=#{foo.value}", нужно вызвать a.jsp. Я же хочу получить доступ к строке вне всяких jsp.
...
Рейтинг: 0 / 0
хранить jspFragment между запросами
    #37995299
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Penkov Vladimirв JspFragment самом может храниться ссылка на сгенерированный класс jsp-сервлета.
Зачем?
...
Рейтинг: 0 / 0
хранить jspFragment между запросами
    #37995302
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczPenkov Vladimirв JspFragment самом может храниться ссылка на сгенерированный класс jsp-сервлета.
Зачем?

что значит зачем? если ее там нет, то все тип топ. я сохранил фрагмент и начал его дергать. но сам фрагмент отдается мне контейнером, я понятия не имею что в нем и как, и можно ли его хранить
...
Рейтинг: 0 / 0
хранить jspFragment между запросами
    #37995306
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как вариант, я могу хранить не jspFragment, а кусок текста, получаемый в результате getJspBody().invoke(), и делать ручной парсинг. тоже вариант
...
Рейтинг: 0 / 0
хранить jspFragment между запросами
    #37995309
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Penkov Vladimir,

a jsp:include не пойдет?
...
Рейтинг: 0 / 0
хранить jspFragment между запросами
    #37995443
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Penkov Vladimir]проблема в том, что этот метод доступен только когда тег вызывается при построении страницы. а я хочу вдобавок уметь строить его вне страницы.

пример

a.jsp
Код: 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.
<div id='s1'>
  <tag:sample id='globalId'>foo=#{foo.value}<tag:sample>
</div>
[src]


теперь чтобы мне получить строку "foo=#{foo.value}", нужно вызвать a.jsp. Я же хочу получить доступ к строке вне всяких jsp.[/quot]
Ну, можно и динамически на сервере пользоваться возможностями jsp/jstl с помощью обертки для View (на примере SpringMVC). Например, сделать такой динамический класс:
[SRC JAVA]public class RenderView implements org.springframework.web.servlet.View {
	private StringWriter htmlString = new StringWriter();

	public RenderView(){}
	public RenderView(String[] parameters, String fragmentFilename, HttpServletRequest request, HttpServletResponse response) throws Exception {
		Map<String, String> model = new HashMap<String, String>();
		for (String parameter : parameters) {
			String[] pair = parameter.split(":", 2);
			model.put(pair[0], pair[1]);
		}
		this.render(model, fragmentFilename, request, response);
	}

	@Override
	public String getContentType() {
		return "text/html";
	}

	@Override
	public void render(Map<String, ?> model, String filename, HttpServletRequest request, HttpServletResponse response) throws Exception {
		final StringWriter html = new StringWriter();
		HttpServletResponseWrapper wrapper = new HttpServletResponseWrapper(response) {
			@Override
			public PrintWriter getWriter() throws IOException {
				return new PrintWriter(html);
			}
		};
		InternalResourceView realView = new InternalResourceView(filename);
		realView.render(model, request, wrapper);
		htmlString = html;
	}
	public String getHtml() {
		return htmlString.toString();
	}
}



И из контроллера (сервлета) вызвать:
Код: java
1.
2.
3.
4.
5.
...
String fragment = new renderView(new String[]{"foo.value":someObject.someValue}, "/WEB-INF/views/fragments/a.jsp", request, response);
...
response.getWriter().write(fragment);
...



Я, к примеру, использую подобную реализацию для рассылки почтовых сообщений из контроллера, шаблонами для которых являются jsp-файлы. Хотя согласен с коллегами, что оперировать фрагментами надо в самой jsp. Кстати, нормально настроенный SpringMVC может сам корректно отдавать куски кода с jsp/jstl-синтаксисом, то есть моя реализация понадобиться не должна. Да и идеологически надо между представлением и контроллером надо оперировать моделью, а не частями представления.
...
Рейтинг: 0 / 0
хранить jspFragment между запросами
    #37995478
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
коллеги, я не внятно объяснил.

мне не нужна вся a.jsp. Мне нужнна только та часть, которая внутри тега.
цель - я могу в любой момент аяксом обновить часть страницы, заключенной внутри тега (на манер facelets), причем на сервере не будет строиться вся страница, а возьмется только нужный кусок, обработается и вернется мне в виде html
...
Рейтинг: 0 / 0
хранить jspFragment между запросами
    #37995490
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все запросто решается инклудами - я могу просто вынести обновляемый кусок в отдельную jsp и просто обработать ее. Но я хочу весь код писать в 1ом месте. финально я хочу, чтобы работал следующий код:

Код: java
1.
2.
3.
4.
5.
6.
<div id='panel-wrapper'>
  <tag:reloadablePanel id='panel'>
	Значение поля: ${someBean.field}
  </tag:reloadablePanel>
</div>
<input type='button' onclick='rpcUtils.invoke("some method", "param1");utils.reload("panel");'/>



при этом rpcUtils.invoke("some method"); обновит значение ${someBean.field}, а utils.reload обновит содержимое tag:reloadablePanel (с сервера вернется обновленный html)
...
Рейтинг: 0 / 0
хранить jspFragment между запросами
    #37995498
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Penkov Vladimir,

я делал отдельный сервлет ДайМнеКусок, который аяксом вызывал и вставлял уже из JS на клиенте. На любое событие в Осле
...
Рейтинг: 0 / 0
хранить jspFragment между запросами
    #37995502
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
соответственно, фрагмент "Значение поля: ${someBean.field}" нужно где-то хранить. вариантов несколько:
1. хранить ссылку на jspFragment. идеальный вариант, появляется возможность писать в теле тега всякие c:if и пр
2. писать тело фрагмента в виде freemarker шаблона (или любом другом шаблонном языке)
...
Рейтинг: 0 / 0
хранить jspFragment между запросами
    #37995503
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Penkov Vladimir,

я делал отдельный сервлет ДайМнеКусок, который аяксом вызывал и вставлял уже из JS на клиенте. На любое событие в Осле

это самый простой вариант, мне он не нужен, так как
1) код разбивается на части
2) помните, я вам обещал грид? вот это часть компонентного движка, с которой будет все прям вообще огонь
...
Рейтинг: 0 / 0
хранить jspFragment между запросами
    #37995519
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Penkov Vladimir,
согласен.
Т.е. если это компонент, то - инкапсуляция - всё барахло внутри.
...
Рейтинг: 0 / 0
хранить jspFragment между запросами
    #37995571
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Penkov Vladimir,

тело выполняется в контексте страницы PageContext, значение тела может зависеть от других тегов выше, а сохранив JspFragment, Вы сохраняете только контекст не существующей уже страницы. Вы вообще пробовали сохранять JspFragment? а потом его выполнять или это только вопросы?
...
Рейтинг: 0 / 0
хранить jspFragment между запросами
    #37995602
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0FDPenkov Vladimir,

тело выполняется в контексте страницы PageContext, значение тела может зависеть от других тегов выше, а сохранив JspFragment, Вы сохраняете только контекст не существующей уже страницы. Вы вообще пробовали сохранять JspFragment? а потом его выполнять или это только вопросы?

вопросы. я вижу что каждый раз jspFragment создается новый.

в моем случае тег не может зависеть от тегов выше (если это так, то сам дурак)
...
Рейтинг: 0 / 0
хранить jspFragment между запросами
    #37995640
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Penkov Vladimirвопросы. я вижу что каждый раз jspFragment создается новый.

в моем случае тег не может зависеть от тегов выше (если это так, то сам дурак)

Это сейчас в tomcat, а завтра, например, будет всего один jspFragment на всю станицу, и будет такие вызовы jspFragment.setIdFragment(0000); xxx.setJspBody(jspFragment);.
читай javadoc:
Implementation Note: It is not necessary to generate a separate class for each fragment. One possible implementation is to generate a single helper class for each page that implements JspFragment. Upon construction, a discriminator can be passed to select which fragment that instance will execute.
...
Рейтинг: 0 / 0
хранить jspFragment между запросами
    #37995676
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я потому и спрашиваю, какие есть еще варианты
...
Рейтинг: 0 / 0
хранить jspFragment между запросами
    #37995846
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / хранить jspFragment между запросами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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