Tiles, dziedziczenie definition i konfiguracja layout`ów

Tiles, dziedziczenie definition i konfiguracja layout`ów
FL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 36
0

Cześć,

Mam mały problem z konfiguracją apache tiles. Mianowicie chciałbym mieć taką strukturę :

  • base.layout.jsp
    -- main.layout.jsp
    -- auth.layout.jsp

W base.layout.jsp chcę mieć wszystkie css oraz js.
main.layout.jsp główny layout po zalogowaniu się przez użytkownika
auth.layout.jsp layout do logowania, rejestracji, itp.

plik tiles.xml:

Kopiuj
 
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE tiles-definitions PUBLIC
        "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
        "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">

<tiles-definitions>
    <definition name="base.definition" template="/WEB-INF/views/jsp/base.layout.jsp">
        <put-attribute name="title" value="" />
        <put-attribute name="meta.description" value="" />
        <put-attribute name="meta.keywords" value="" />
        <put-attribute name="meta.author" value=""/>
        <put-attribute name="body.class" value="" />
    </definition>

    <definition name="login.layout.definition" extends="base.definition">
        <put-attribute name="title" value="" />
        <put-attribute name="body" value="/WEB-INF/views/jsp/auth.layout.jsp" />
    </definition>

    <definition name="authorization/login" extends="login.layout.definition">
        <put-attribute name="content" value="/WEB-INF/views/jsp/authorization/login.jsp" />
    </definition>
</tiles-definitions>

plik base.layout.jsp (nie będę całego wrzucał)

Kopiuj
    //ładownanie css, js, meta tagi, itp...
    <body class="<tiles:getAsString name="body.class" defaultValue="login" />">
        <tiles:insertAttribute name="body" />
    </body>

Plik auth.layout.xml

Kopiuj
<tiles:putAttribute name="body.class" value="login" />
<div class="row">
        <tiles:insertAttribute name="content" /> // W tym miejscu chciałbym aby ładować poszczególne widoku(login, registration, ...)
</div>

Niestety wyskakuje mi exception:
org.apache.tiles.template.NoSuchAttributeException: Attribute 'content' not found.

Czy byłby ktoś wstanie pomóc rozwiązać problem bądź wytłumaczyć jak do tego się zabrać prawidłowo ?

FL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 36
0

Zmieniłem swój plik tiles.xml na:

Kopiuj
<tiles-definitions>
    <definition name="base.definition" template="/WEB-INF/views/jsp/base.layout.jsp">
        <put-attribute name="body" value="" />
    </definition>

    <definition name="auth.definition" extends="base.definition" >
        <put-attribute name="body" value="/WEB-INF/views/jsp/auth.layout.jsp" />
    </definition>

    <definition name="authorization/login" extends="auth.definition">
        <put-attribute name="content" value="/WEB-INF/views/jsp/authorization/login.jsp" />
    </definition>
</tiles-definitions>

W auth.layout.jsp mam atrybut content, ale wyskakuje exception:
org.apache.tiles.template.NoSuchAttributeException: Attribute 'content' not found.

FL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 36
0

Problem rozwiązany,

Kopiuj
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE tiles-definitions PUBLIC
        "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
        "http://tiles.apache.org/dtds/tiles-config_3_0.dtd"> <!-- Wcześniej była wersja 2.0 i nie widział znaczników 'cascade' -->
<tiles-definitions>
    <definition name="base.definition" template="/WEB-INF/views/jsp/base.layout.jsp" />

    <definition name="auth.definition" extends="base.definition" >
        <put-attribute name="body" value="/WEB-INF/views/jsp/auth.layout.jsp" cascade="true" />
    </definition>

    <definition name="authorization/login" extends="auth.definition">
        <put-attribute name="body.class" value="login" cascade="true" />
        <put-attribute name="content" value="/WEB-INF/views/jsp/authorization/login.jsp" cascade="true"  />
    </definition>
</tiles-definitions>
FL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 36
1

Problem rozwiązany,

Kopiuj
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE tiles-definitions PUBLIC
        "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
        "http://tiles.apache.org/dtds/tiles-config_3_0.dtd"> <!-- Wcześniej była wersja 2.0 i nie widział znaczników 'cascade' -->
<tiles-definitions>
    <definition name="base.definition" template="/WEB-INF/views/jsp/base.layout.jsp" />

    <definition name="auth.definition" extends="base.definition" >
        <put-attribute name="body" value="/WEB-INF/views/jsp/auth.layout.jsp" cascade="true" />
    </definition>

    <definition name="authorization/login" extends="auth.definition">
        <put-attribute name="body.class" value="login" cascade="true" />
        <put-attribute name="content" value="/WEB-INF/views/jsp/authorization/login.jsp" cascade="true"  />
    </definition>
</tiles-definitions>

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.