Форум программистов, компьютерный форум, киберфорум
Java: Spring, Spring Boot
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 01.02.2013
Сообщений: 25

Spring 4 + Tiles 3: из jsp не видно атрибуты, переданные из контроллера

22.07.2014, 10:26. Показов 3315. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь в контроллере Спринга положить в модель атрибут:

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
@Controller
public class HomeController {
 
    @RequestMapping(value = "/")
    public String showHomePage(Model model) {
        model.addAttribute("attr", new Date());
 
        return "home";
    }
 
}


И вывести его в jsp:

Кликните здесь для просмотра всего текста
HTML5
1
2
3
<div>
    ${attr}
</div>


Tiles настраиваю точно по примеру из оффициальной документации.

spring-tiles.xml:
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
<beans [...]>
 
    <bean id="tilesViewResolver"
          class="org.springframework.web.servlet.view.tiles3.TilesViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView"/>
    </bean>
    <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
        <property name="definitions" value="/WEB-INF/views/views.xml"/>
    </bean>
 
</beans>


viesw.xml:
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<tiles-definitions>
 
    <definition name="template"
                template="/WEB-INF/views/main_template.jsp">
        <put-attribute name="header"
                       value="/WEB-INF/views/parts/header.jsp" />
        <put-attribute name="side"
                       value="/WEB-INF/views/parts/sidebar.jsp" />
    </definition>
 
    <definition name="home" extends="template">
        <put-attribute name="content" value="/WEB-INF/views/home.jsp" />
    </definition>
 
    [ остальные definition ]
 
</tiles-definitions>


main_template.jsp:
Кликните здесь для просмотра всего текста
HTML5
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
<%@ taglib prefix="s" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="t" uri="http://tiles.apache.org/tags-tiles" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Ugly blog</title>
 
    <link rel="stylesheet" href="<s:url value="/resources/css/bootstrap.min.css"/>">
 
    <link rel="stylesheet" href="<s:url value="/resources/css/bootstrap-theme.min.css"/>">
 
    <link rel="stylesheet" href="<s:url value="/resources/css/style.css"/>">
</head>
 
<body>
<div id="container">
    <t:insertAttribute name="header"/>
    <t:insertAttribute name="side"/>
    <t:insertAttribute name="content"/>
</div>
 
<script src="<s:url value="/resources/js/jquery.min.js"/>"></script>
<script src="<s:url value="/resources/js/bootstrap.min.js"/>"></script>
</body>
</html>


В pom.xml есть и tiles-api и tiles-el и jstl и даже на всякий случай tiles-extras и servlet-api
Весь pom.xml:
Кликните здесь для просмотра всего текста
XML
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.my</groupId>
    <artifactId>ugly-blog</artifactId>
    <packaging>war</packaging>
    <version>1.0</version>
 
    <repositories>
        <repository>
            <id>JBoss repository</id>
            <url>http://repository.jboss.com/maven2/</url>
        </repository>
    </repositories>
 
    <properties>
        <spring.version>4.0.5.RELEASE</spring.version>
        <hibernate.version>4.3.5.Final</hibernate.version>
    </properties>
 
    <name>Ugly blog</name>
 
    <dependencies>
 
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>
 
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.7.7</version>
        </dependency>
 
        <!-- View -->
 
        <dependency>
            <groupId>org.apache.tiles</groupId>
            <artifactId>tiles-api</artifactId>
            <version>3.0.4</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tiles</groupId>
            <artifactId>tiles-el</artifactId>
            <version>3.0.4</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tiles</groupId>
            <artifactId>tiles-extras</artifactId>
            <version>3.0.4</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        </dependency>
 
        <!-- Database -->
 
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>${hibernate.version}</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-dbcp2</artifactId>
            <version>2.0</version>
        </dependency>
 
        <!-- Testing -->
 
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.8</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>1.4.180</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
            <scope>test</scope>
        </dependency>
 
    </dependencies>
    <build>
        <finalName>ugly-blog</finalName>
    </build>
</project>


В итоге всё работает, открывается нужная jsp, но в браузере так и остаётся ${attr} вместо значения атрибута.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.07.2014, 10:26
Ответы с готовыми решениями:

Ошибка Tiles в Spring MVC
Ммм. В общем, выдает ошибку java.lang.NoSuchMethodError:...

Spring MVC атрибуты модели
Добрый день! Работаю со Spring MVC, допустим есть два метода в классе контроллера: @RequestMapping(value = &quot;/&quot;,...

Spring+Jsp
Получаю набор ошибок Can not find the tag library descriptor for &quot;http://www.springframework.org/tags&quot; Для &lt;%@taglib...

5
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
22.07.2014, 11:35
Насколько я помню должна быть примерно такая конструкция


Java
1
2
3
    ModelAndView mnv = new ModelAndView("home");
        mnv.addObject("attr", new Date());
    return mnv;
PS. уберите servlet-api из pom.xml
это плохая практика
0
0 / 0 / 0
Регистрация: 01.02.2013
Сообщений: 25
22.07.2014, 11:50  [ТС]
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
Насколько я помню должна быть примерно такая конструкция
Java
1
2
3
* * ModelAndView mnv = new ModelAndView("home");
* * * * mnv.addObject("attr", new Date());
* * return mnv;
Не обязательно, так тоже работает.
Но на всякий случай проверил - результат тот же.

А в pom.xml я уже просто всё подряд от безысходности пихаю

Ещё вот ошибку нашёл - заменил TilesViewResolver в конфигурации Spring на UrlBasedViewResolver (так в документации написано). Но это почему-то тоже ничего не изменило..
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
22.07.2014, 12:46
Скорее всего проблема в тайлах. Попробуйте без них сначала сделать
1
0 / 0 / 0
Регистрация: 01.02.2013
Сообщений: 25
22.07.2014, 13:31  [ТС]
Не актуально
Попробовал - то же самое. Новые файлы:

spring-tiles.xml (лень было переименовывать файл )
XML
1
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
HomeController.java:

Java
1
2
3
4
5
6
    @RequestMapping("/")
    public String showHomePage(ModelMap model) {
        model.addAttribute("attr", new Date());
 
        return "/WEB-INF/plain_jsp_home.jsp";
    }
plain_jsp_home.jsp:
HTML5
1
2
3
4
5
6
7
8
9
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title></title>
</head>
<body>
    ${attr}
</body>
</html>
В pom.xml из того, что относится к view оставил только jstl
XML
1
2
3
4
5
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>


Пока менял файлы, глянул на доктайп web.xml:
XML
1
2
3
<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >
Вспомнил, что когда-то из-за этого не работал EL. Поменял на:
XML
1
2
3
<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.4//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >
(вторая строчка: 2.3 -> 2.4)

В принципе проблема решена. Правда, IDEA не подсказывает в редакторе jsp какие есть атрибуты. Это из-за того, что указан web-app_2_3.dtd? Поможет, если и его поменять на 2.4?

Добавлено через 10 минут
UPD. Не, не помогло IDEA по прежнему по Ctrl + space видит только атрибуты, на которых висит @ModelAttribute, но не те, которые просто передаются в Model (использование ModelAndView тоже ничего не меняет).
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
22.07.2014, 14:11
Цитата Сообщение от WarAngel-alk Посмотреть сообщение
Правда, IDEA не подсказывает в редакторе jsp какие есть атрибуты.
это ещё хорошо. Эклипс вообще ничего не подсказывает)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.07.2014, 14:11
Помогаю со студенческими работами здесь

Spring MVC, JSP
Здравствуйте. Есть следующая ситуация: есть jsp страница создания issue &lt;/head&gt; &lt;body&gt; &lt;nav class=&quot;navbar navbar-inverse...

Два контроллера под одну JSP
Необходимо разделить страницу пополам. Верхняя часть - обычная страница (взаимодействует с InfoController), нижняя - чат (взаимодействует с...

Spring Boot не видит jsp
Просто пишет не удается найти страницу https://www.cyberforum.ru/attachment.php?attachmentid=751100&amp;stc=1&amp;d=1477583216 Вот...

Уроки Spring + jsp + БД (hibernate)
Добрый день, учу фреймворк Spring и JavaEE в целом. прочитал много уроков и видео посмотрел. В основном про Сервлеты и JSP. Да как...

Spring mvs + jsp + fancybox
Всем привет. Написал небольшую фото галерею на Spfing mvc. Фото выводит, но хотелось как то украсить. Нашел FancyBox, но подключить его ни...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru