Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java EE (J2EE) и Spring > Struts + JSTL |
Автор: svby 7.8.2005, 17:42 | ||
Нужно в Struts-тег вложить выражение JSTL. Вторая строчка не работает. Как правильна записать?
|
Автор: gEndelf 9.8.2005, 18:52 | ||
а зачем ты в поле property подставляешь значение ? там должно быть название геттера ну а если в input необходимо подставить значение и имя, то делается так
|
Автор: kkorsakoff 4.4.2006, 19:44 |
У меня почему-то выводится строка без обработки, т.е. что-то вроде ${screenname.screenname}. <c:out> вообще работает. Приходится выводить при помощи нелепой конструкции value="<%=((Screenname)pageContext.getAttribute("screenname")).getScreenname()%>" |
Автор: kkorsakoff 4.4.2006, 23:54 | ||||
Решил не создавать новую тему. Сегодня был первый практический опыт применения технологии JSTL. Первые впечатления: Уменьшает количество скриплетов, повышает читаемость кода. Однако, кто сказал, что тому же дизайнеру будет проще работать с <c:out..>, чем с <%=...%>. Это еще не факт. Итерация радует донельзя. Но не могу сделать простейшие вещи (или не умею?): 1. Раз уж мы все рабочие данные поместили в аттрибуты (страницы/запроса/сессии/приложения), то должен быть простой спрособ вынимать эти данные в любом месте, а не только в тэгах <c:...> Наглядный пример - мой пост выше. <html:text property="..." value="${per.value.quantity}" /> - выводит ${per.value.quantity}, вместо значения этого поля. 2. Полная невозможность получать данные для манипулирования из методов с параметрами (не знаю как их правильно назвать). Пример: пользователь хочет посмотреть кто сколько сообщений ему оставил. Он видит список "друзей", перед именем каждого кол-во новых сообщений. Страница messages.jsp - запрос к БД в самой странице не делаем, а имеем класс, который выполняет всю логику. Назовем его Main. Объект класса всегда лежит в applicationScope. Чтобы получить список друзей/сообщений необходимо вызвать метод Main.getNewMessages(String account); Получается при помощи чистого JSTL коллекцию уже не получить. Приходится в начале страницы вставлять
, а затем работать через ${newMessages} Теряется суть JSTL - где же тут упрощение. Или абсолютно все зашивать в Action'ы и передавать в jsp чистые данные в виде готовых переменных, коллекций, объектов... Получается на каждую страницу необходимо писать по одному Action'у, плюс по Action'у для "действительно" действий, таких как удаление сообщений, создание и т.д. Это неплохо затягивает сроки разработки. Тогда уж проще в начале страницы написать парочку скриплетов. Поясните, может я архитектурно что-то не так понимаю. 3. if есть, else нет. Ну ладно, переживем....(всё повышаем читаемость) ![]() 4. Что больше всего не понравилось - отсутствие возможности использовать константы в выражениях jstl. Хочу сделать простейшую проверку, что человек залогинился и его статус - не заблокирован
выдает ошибку javax.servlet.jsp.JspTagException: javax.servlet.jsp.JspException: An error occurred while evaluating custom action attribute "test" with value "${(empty sessionScope.Passport) || (sessionScope.Passport.status==Passport.STATUS_BLOCKED)}": Unable to find a value for "STATUS_BLOCKED" in object of class "....Passport" using operator "." |
Автор: zera 5.4.2006, 12:54 |
по пункту 3 - есть же <c:choose> <c:when>...</c:when>[<c:otherwise>..</c:otherwise>]</c:choose> 1 и 2 - в силу незнания стратса не отвечу, но ${main.newMessage} -должно работать. и <c:out зачастую не нужен |
Автор: kkorsakoff 5.4.2006, 17:00 |
Не работает ни в аттрибутах стратсах, ни просто в хтмле. Работает ${} только в тегах JSTL |
Автор: zera 6.4.2006, 18:19 | ||||||
если в web.xml
а вот если
- работает. первый пример под рукой оказался.
или мы о разном говорим? ![]() |
Автор: kkorsakoff 6.4.2006, 20:34 |
О том, о том![]() Спасибо! |