Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Tiles: best practices / 13 сообщений из 13, страница 1 из 1
28.02.2007, 20:02:06
    #34361809
TTiles
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tiles: best practices
Привет
Как использовать тайлс с условием, чтобы не плодить лишние страницы.
Пример: есть куча страниц у которых структура одинакаво, различается лишь body.
Получается, чтобы отобразить одну страницу page.jsp мне нужно создать ещё и pageBody.jsp.
Нашел вот такой способ ( в штратс ин екшн):
tiles:insert definition="main" flush="true">
<tiles:put name="title" value="Test title :)" />
<tiles:put name="body" type="String">
index body прямым текстом
</tiles:put>
</tiles:insert>

Есть альтернативы ? почему етот способ не популярен (сколько не смотрел примеров, так никто не делает, плодят екстра файлы) ?
...
Рейтинг: 0 / 0
01.03.2007, 09:36:41
    #34362495
brut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tiles: best practices
если я вас правильно понял, то взгяните на этото варинт
<tiles-definitions>

<definition name="mainLayoutDef" path="/common/layout/classicLayout.jsp">
<put name="title" value="Main Tile Page"/>
<put name="header" value="/common/header.jsp"/>
<put name="navbar" value="/common/navbar2.jsp"/>
<put name="body" type="string"/>
<put name="news" value="/common/news.jsp"/>
<put name="footer" value="/common/footer.jsp"/>
</definition>

<definition name="q1" extends="mainLayoutDef" >
<put name="body" value="/common/someBody.jsp"/>
</definition>
<definition name="q2" extends="mainLayoutDef" >
<put name="body" value="/common/someBody2.jsp"/>
</definition>
</tiles-definitions>
множество типовых решений описано в "Jakarta Struts Cookbook (OReilly)" хорошая теория "Wrox Press - Professional Jakarta Struts - 2004"
...
Рейтинг: 0 / 0
01.03.2007, 10:06:48
    #34362582
yanich
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tiles: best practices
brut
Вы не правильно поняли автора, он хочет избавиться не от дублирования definition, а от дублирования заголовочных jsp-страниц для каждой body-страницы, в которой и находится основная нагрузка.
...
Рейтинг: 0 / 0
01.03.2007, 10:08:34
    #34362587
yanich
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tiles: best practices
Сорри, разметка должна быть такой:
brutесли я вас правильно понял...
Вы не правильно поняли автора, он хочет избавиться не от дублирования definition, а от дублирования заголовочных jsp-страниц для каждой body-страницы, в которой и находится основная нагрузка.
...
Рейтинг: 0 / 0
01.03.2007, 10:47:40
    #34362728
brut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tiles: best practices
извините но об єтом и речь. Стриница одна плодятса только опредиления. в первом опредиление указываем страницу, более она нигде не указывается... тела у нас два, так где дубляж страниц. есть страници только с разметкой (в даном случаэ одна) ы две станици с уныкальным телом
...
Рейтинг: 0 / 0
01.03.2007, 11:37:54
    #34362960
yanich
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tiles: best practices
brutизвините но об єтом и речь. Стриница одна плодятса только опредиления. в первом опредиление указываем страницу, более она нигде не указывается... тела у нас два, так где дубляж страниц. есть страници только с разметкой (в даном случаэ одна) ы две станици с уныкальным телом
Так, теперь я ничего не понял ...
А можно примерчик jsp-странички для вашего примера ?

P.S.
А можно попросить Вас писать все-таки на русском языке, используя хоть малейшие знания грамматики и фонетики ? - а то смысл Ваших сообщений теряется где-то между "плодятся" и "станици" ... ;-)
...
Рейтинг: 0 / 0
01.03.2007, 12:30:52
    #34363197
brut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tiles: best practices
yanich[quot brut]
P.S.
А можно попросить Вас писать все-таки на русском языке, используя хоть малейшие знания грамматики и фонетики ?
можно, просите. Ответ такой как и вопрос... если вы вместо технической дискусии не будете уходить на другие темы, если не интересно... что ж .. прощайте (руский для меня не родной, прошу прощение за обиду языка, он здесь ни причем... а я не поверю что у вас не получилось прочесть) надеюсь мы не будем уходить от темы... но если это единственная тема которую мы можем поддержать - это не интересно мне
ваш смайл не уместен!!!

пример
classicLayout.jsp
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>

<html>
  <head>
      <title><tiles:getAsString name="title"/></title></head>
  <body>
  <table>
      <tr>
          <td><tiles:insert attribute="header"/></td>
      </tr>
      <tr>
          <td><tiles:insert attribute="navbar"/> </td>
          <td><tiles:insert attribute="body"/> </td>
          <td><tiles:insert attribute="news"/> </td>
      </tr>
      <tr>
          <td><tiles:insert attribute="footer"/> </td>
      </tr>
  </table>
  </body>
</html>



body.jsp
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://www.manning.com/jsptagsbook/simple-taglib" prefix="first"%>
<table>
    <tr>
        <td>
first body
        </td>
    </tr>
</table>

body2.jsp
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://www.manning.com/jsptagsbook/simple-taglib" prefix="first"%>
<table>
    <tr>
        <td>
        body2
        </td>
    </tr>
</table>

tiles-defs.xml
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
    <definition name="mainLayoutDef" path="/common/layout/classicLayout.jsp">
        <put name="title" value="Main Tile Page"/>
        <put name="header" value="/common/header.jsp"/>
        <put name="navbar" value="/common/navbar2.jsp"/>
        <put name="body" type="string"/>
        <put name="news" value="/common/news.jsp"/>
        <put name="footer" value="/common/footer.jsp"/>
    </definition>

    <definition name="someBody"  extends ="mainLayoutDef" >
        <put name="body" value="/body.jsp"/>
    </definition>

   <definition name="someOtherBody"  extends ="mainLayoutDef" >
        <put name="body" value="/body2.jsp"/>
    </definition>

struts-config.xml
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<action-mappings>
        <action path="/someBody">
            <forward name="success" path="someBody"/>
        </action>

      <action path="/someOtherBody">
            <forward name="success" path="someOtherBody"/>
        </action>
    </action-mappings>


пример не является законченым и готовым к использованию.
на одной странице описывается размещения елементов из описания, само описание свазываеться со страницей, а экшены передодят не на страници а на описания, когда сервлет хочет сделать переход он сначала ищет такой tile-definition если находит то идет по пути в xml иначе передает на страницу, (хотя этот процес я могу описывать не точно, если интересно найду книгу). Как результат мы емеем более мение чистый декларативный подход. Значения елементов опредиляются не на странице а в описаниях.
...
Рейтинг: 0 / 0
01.03.2007, 12:41:23
    #34363247
TTiles
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tiles: best practices
brutесли я вас правильно понял, то взгяните на этото варинт
<tiles-definitions>

<definition name="mainLayoutDef" path="/common/layout/classicLayout.jsp">
<put name="title" value="Main Tile Page"/>
<put name="header" value="/common/header.jsp"/>
<put name="navbar" value="/common/navbar2.jsp"/>
<put name="body" type="string"/>
<put name="news" value="/common/news.jsp"/>
<put name="footer" value="/common/footer.jsp"/>
</definition>

<definition name="q1" extends="mainLayoutDef" >
<put name="body" value="/common/someBody.jsp"/>
</definition>
<definition name="q2" extends="mainLayoutDef" >
<put name="body" value="/common/someBody2.jsp"/>
</definition>
</tiles-definitions>
множество типовых решений описано в "Jakarta Struts Cookbook (OReilly)" хорошая теория "Wrox Press - Professional Jakarta Struts - 2004"

в вашем варианте, чтобы отобразить страницу page.jsp - нужно создать 2 страницы: саму page.jsp с definition q1 и вторую страницу /common/someBody.jsp. Я правильно понимаю ? тогда етот вариант не подходит.
...
Рейтинг: 0 / 0
01.03.2007, 12:44:04
    #34363266
TTiles
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tiles: best practices
ага, теперь понятно :) спасибо, возьму на вооружение
...
Рейтинг: 0 / 0
01.03.2007, 12:46:25
    #34363275
yanich
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tiles: best practices
brut
Пример хороший, описание понятное - спасибо...
И еще один технический вопрос тогда в догонку - не в курсе как использовать такой подход в приложениях JSF c использованием Tiles ? А именно - как задать navigation-rule, ссылающиеся не на jsp-страницы, а на описания ?
...
Рейтинг: 0 / 0
02.03.2007, 16:32:36
    #34367501
brut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tiles: best practices
извините не знаю... к этому еще руки не дошли
...
Рейтинг: 0 / 0
06.03.2007, 17:41:06
    #34375385
ddocker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tiles: best practices
И еще один интересный момент tiles, о котором думаю немногие знают. В книжках не пишут - нашел сам путем экпериментов:
В качестве значения value можно использовать имя definition-а, а не хардкодить всегда путь к jsp. Т.е.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
   <definition name="mainLayoutDef" path="/common/layout/classicLayout.jsp">
        <put name="title" value="Main Tile Page"/>
        <put name="header" value=".commonHeader"/>
        <put name="navbar" value="/common/navbar2.jsp"/>
        <put name="body" type="string"/>
        <put name="news" value="/common/news.jsp"/>
        <put name="footer" value=".commonFooter"/>
    </definition>

    <definition name=".commonHeader" path = "/path/to/file1.jsp" />

   <definition name=".commonFooter"  path = "/path/to/file2.jsp" />
...
Рейтинг: 0 / 0
16.03.2007, 08:38:01
    #34395038
brut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tiles: best practices
там можно писать любой URL который поймет Struts, в том числе и action
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Tiles: best practices / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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