Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Трансляция JSP


Автор: Hidrag 22.2.2007, 22:40
Дабы не плодить кучу jsp страниц я решил большую часть хтмл кода записать в БД и вызывать нужный "текст" в зависимости от параметров реквеста, данный хтмл который в БД содержит внутри себя скриплеты (блоки вида <%=param%>), естественно переменные для этих скриплетах определены и инициализированный в самой jsp (та часть кода которая постоянна на странице и не пишется в бд), но при выводе этого кода с помощью тех же скриплетов <%=dbm.getHTML(param)%> все выводится на страницу и правильно отображется кроме тех мест где были скриплеты они так и выводятся: "<%=param%>", то есть Java (или сервер приложений?) парсит код только первой страницы jsp а то что выводит скриплет просто выводит как есть...

даже не знаю, как теперь выкручиваться... со статичным хтмл все ок, а с динамичным не получается а все хотелось сделать средствами одной страницы jsp.

Автор: powerOn 22.2.2007, 23:08
Цитата(Hidrag @  22.2.2007,  22:40 Найти цитируемый пост)
то есть Java (или сервер приложений?) парсит код только первой страницы jsp а то что выводит скриплет просто выводит как есть...


гм.. а разве JSP страницы не компилируются в сервлет? При таком подходе вполне естественно, что код, который берется из бд, уже не подвергается обработке....

Автор: JUncle 23.2.2007, 13:00
Цитата(Hidrag @  22.2.2007,  22:40 Найти цитируемый пост)
даже не знаю, как теперь выкручиваться... со статичным хтмл все ок, а с динамичным не получается а все хотелось сделать средствами одной страницы jsp. 

Мне кажется, есть смысл хранить только статический контент. Например статьи и пр.
Зачем динамический в базу то? (Тем более работать без ухищрений не будет).

Автор: Stampede 27.2.2007, 20:05
Цитата(Hidrag @  22.2.2007,  12:40 Найти цитируемый пост)
даже не знаю, как теперь выкручиваться... со статичным хтмл все ок, а с динамичным не получается а все хотелось сделать средствами одной страницы jsp.


Вот, кстати, еще один плюс в зачет шаблонным движкам: там динамику можно верстать на ходу. Например, в Velocity есть такая штука как RenderTool. Допустим, твой подгружаемый шаблон хранится в базе и содержит какую-то логику. Тогда делаем так:

Код

// достаем текст блока-шаблона из базы
String block = yourDataService.getTemplate(someParams);
// напихиваем в контекст всякие значения
Context ctx = new VelocityContext();
ctx.put("today", new Date());
// сливаем одно с другим
String html = new RenderTool().eval(ctx, block);


И фсех делов.

А еще можно экземпляр RenderTool положить в контекст, и обращаться к нему прямо из шаблона:

Код

$render.eval($ctx, $block)


В общем, возможности ограничены только вашей фантазией. Как говорится, думайте сами, решайте сами... smile

Автор: y3u 28.2.2007, 17:22
шаблонные движки - это искусство smile

а касательно JSP - да, ак делать нельзя, при обращении к JSP контейнер смотрит, если JSP не из ап ту дейт, то он компилирует жысыпешку в обычный сервлет, далее, все что вставляется в нее - просто игнорируется и интерпретируется как обычный текст.
Цитата(Hidrag @  22.2.2007,  22:40 Найти цитируемый пост)
Дабы не плодить кучу jsp страниц я решил большую часть хтмл кода записать в БД и вызывать нужный "текст" в зависимости от параметров реквеста


а нельзя туда положить кусок XML кода, а не код со скриптлетами? к примеру, ты пишешь свой XML тег, в него кладешь параметры из реквеста, далее, кладешь кусок данных из БД и пропускаешь дальше через XSL трансформ, который исходя из параметров пропускает в готовую страничку только нужный контент...

Автор: Hidrag 28.2.2007, 17:47
Цитата(y3u @  28.2.2007,  17:22 Найти цитируемый пост)
а нельзя туда положить кусок XML кода, а не код со скриптлетами? к примеру, ты пишешь свой XML тег, в него кладешь параметры из реквеста, далее, кладешь кусок данных из БД и пропускаешь дальше через XSL трансформ, который исходя из параметров пропускает в готовую страничку только нужный контент...

Интересная реализация, подумаю над ней...smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)