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


Автор: DissDoc 23.12.2012, 11:48
Всем привет! Появилась вот какая проблема. Есть много-много повторяющегося кода на каждой странице
Код

// много кода
<c:if test=${not empty message}>
    <div>Error</div>
</c:if>
// много кода

Можно ли каким-то образом выделить этот код в отдельный файл и просто подключать при необходимости ?
А можно ли вычленить этот код и подключать его, передавая туда параметр какой-нибудь?

Автор: jk1 23.12.2012, 16:07
Цитата

Можно ли каким-то образом выделить этот код в отдельный файл и просто подключать при необходимости ?
А можно ли вычленить этот код и подключать его, передавая туда параметр какой-нибудь? 


Можно написать собственный JSP-тег с любой нужной параметризацией. В качестве примера сам тег:
Код

<%@ tag language="java" pageEncoding="UTF-8" %>
<%@ tag body-content="empty" %>
<%@ attribute name="users" required="true" type="java.util.List" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<c:choose>
    <c:when test="${!(empty users)}">
        There are some users here
    </c:when>
    <c:otherwise>
        No users defined
    </c:otherwise>
</c:choose>


и .tld описание к нему:
Код

<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
        version="2.0">

    <description>General purposes tag library</description>
    <tlib-version>1.0</tlib-version>
    <short-name>jtalks</short-name>
    <uri>http://www.jtalks.org/tags</uri>

    <tag-file>
        <name>users</name>
        <path>/WEB-INF/tags/users.tag</path>
    </tag-file>
    
    <!--some other tags here-->
    
</taglib>


Теперь его можно использовать так:
Код

<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%@ taglib prefix="jtalks" uri="http://www.jtalks.org/tags" %>
...
    <div id="users-stats" class="well forum-user-stats-container">
        <strong><spring:message code="label.section.now_browsing"/></strong>
        <jtalks:users users="${viewList}"/>
    </div>
...

Автор: DissDoc 24.12.2012, 14:56
Хм. Интересно. Поищу как решается это в JSPX файлах

Автор: DissDoc 28.3.2013, 16:12
Не стал заводить такую же тему. Поскольку вопрос такой же и смысл несет конкретно об Apache Tiles 2.
Итак, вопрос - оптимизация страницы с помощью Apache Tiles. Есть такой код (самый элементарный привожу!)
Код

<c:forEach var="element" items="${data}">
    <tiles:insertDefinition name="item.detail"/>
</c:forEach>

Сам шаблон item.detail
Код

<div>
    <h1>${element.title}</h1>
    <p>${element.description}</p>
</div>

В результате ничего не выводится.

Если я вытаские из цикла(!) forEach и аналогично подключаю definition. То все работает корректно. Как только я вставляю в цикл, то мой шаблон не видит переменную. Как исправить? Есть решения и/или идеи какие?

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