![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| implements |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 20.7.2010 Репутация: нет Всего: нет |
Добрый день
нужно элегантно отобразить данные в jsp к примеру получаю myObject который имеет количество полей countFields ну и сами поля field1,filed2 e.t.c вот нужно отобразить filed, если countFileds =3, то вывести field1,field2,field3 и т.д. как можно это сделать в jsp? попробовал банальную конкатинацию, <c:forEach var="i" begin="1" end="${myObject.countFields }"> <c:out value=' ${myObject.field+i}'/> </c:forEach> понятно что получил бред =) |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 8 Всего: 118 |
Я не вижу другого способа, кроме как честно использовать рефлекшн.
|
|||
|
||||
| implements |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 20.7.2010 Репутация: нет Всего: нет |
||||
|
||||
| mbasil |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 399 Регистрация: 4.5.2007 Где: Москва Репутация: 9 Всего: 13 |
А не проще ли заменить набор полей на коллекцию?
Если только вы не пытаетесь написать что-то супер универсальное, то есть, если класс может быть любым. В этом, последнем случае без рефлекшн не обойтись никак -даже не пытайтесь. ----------------------------------------------------------------------------------------------------------------- Написал, но вскоре пришло в голову "поганенькое" решение, без использования рефлекшн - делегировать самому классу выдавать массив строковых значений: public class MyClass { private double price = 345.65; private java.util.Date dt = new java.util.Date(); private static final SimpleDateFormat df = new SimpleDateFormat("dd.MM.yyyy"); public String[] getFields() { String[] as = new String[2]; as[0] = String.valueOf( price ); as[1] = df.format( dt ); return as; } Это сообщение отредактировал(а) mbasil - 26.3.2015, 09:37 |
|||
|
||||
| mbasil |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 399 Регистрация: 4.5.2007 Где: Москва Репутация: 9 Всего: 13 |
Чтобы уж подытожить:
Мне кажется (судя по вопросу) вы пытаетесь организовать универсальный метод вывода строк из полей сущности в HTML, и, обратно: автоматические преобразования строковых полей формы в свойства сущности. Подобную идею я пытался реализовать пару лет назад в виде библиотеки конвертора, состряпанной на основе Hibernate Validator. Как только начало что-то получаться, я понял, что дальше надо писать библиотеку пользовательских тегов для страницы. Несложно, но скучно, и как-то забросил, а вообще, мне кажется, идея неплоха. Что-то вроде JSF для решения конкретной задачи, только проще и без вывертов. Это сообщение отредактировал(а) mbasil - 29.3.2015, 21:29 |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 8 Всего: 118 |
В итоге получится тот же JSF или Struts.
|
|||
|
||||
| mbasil |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 399 Регистрация: 4.5.2007 Где: Москва Репутация: 9 Всего: 13 |
Это так, но с небольшим отличием.
В JSF была реализована концепция валидатора, но она была неотделима от JSF. Спецификация на валидацию и решение в виде отдельных фреймворков, во-первых позволило осуществлять проверки на разных уровнях (включая Hibernate), не требуя при этом использования в некотором смысле тяжеловесного решения JSF. То есть такое решение "оторвало" валидацию от JSF. А процесс конвертирования, по-видимому считается привязанным непосредственно к презентационному слою, и вроде как нет особого смысла отрывать его от JSF. Мне кажется это не так. Вынесение валидации за пределы JSF и привязка описания с помощью аннотаций к полям Entity поменяла суть процесса. То же относится к конвертированию. Это действо - не суть исключительно вспомогательная операция презентационного слоя, а качество присущее Entity классам, то есть доменам полей. Сегодня в большинстве случаев можно считать объекты Entity основными носителями данных, которые вполне могут инкапсулировать описание валидации и конвертирования с помощью аннотаций. Другой код в Entity кроме "геттеров", "сеттеров"(пустых - без кода), а также hashCode(), equals(), toString() (и возможно compareTo()) просто не нужен. Как не нужны всякие там ActionForm (Struts) и проч. Но, это только мое личное мнение (всегда есть возможность ошибиться). |
|||
|
||||
| implements |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 20.7.2010 Репутация: нет Всего: нет |
ну я сделал через рефлекцию, но не в jsp а в самом контроллере, не зачем отдавать во Views не используемые данные, и уже там проверять,получилось проще+не так много байтов улетает
|
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |