| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > taglib-ы в jsp |
| Автор: Eugenia12 27.1.2012, 12:51 | ||
| Всем доброго времени суток! Только начинаю изучать пользовательские теги и случилась такая проблема, связанная с непониманием вывода в jsp этих самых пользовательских тэгов. Если кто с такой проблемой сталкивался уже помогите плиз разобраться. Есть таблица в БД, из которой считываются данные, а именно поля id, name и hidden. Класс Section содержит поля id, name и hidden. Класс Sections extends TreeSet<Section>. Считываемые данные из БД заноситься в класс Sections, который создаётся в обработчике тэга, а затем, используя итератор, потоком вывода и установкой атрибутов pageContext объекты Sections отображаются в jsp. При первом обращении к этой jsp данные считываются из БД и отображаются как надо, но при изменении этих данных в БД (например редактировании или добавлении новой записи в БД) и обновлении страницы ничего не изменяется, в jsp как было всё так и остаётся( Только после reload сервера и обновлении страницы можно увидеть обновлённые данные БД. Кста если использовать в jsp вместо пользовательского тэга javaBean, то всё работает и отображается норм. А вот с taglib какая-то беда... только после перезапуска сервера... Почему так происходит? Куда копать? Класс обработки тэга:
Часть кода jsp: <%@taglib uri="/WEB-INF/tlds/options.tld" prefix="options"%> <html> ... <options:Sections> <tr> <td> <input type="checkbox" name="sections" value="${id}"/> </td> <td> <a href="edit.action?param=sections&val=${name}"> ${name}</a> </td> </tr> </options:Sections> </html> |
| Автор: Eugenia12 27.1.2012, 15:23 |
| Вопрос решён! Инициализацию TreeSet-a private Sections sections = new Sections(); нужно было оставить null, т е private Sections sections; а в doStartTag () присваивать уже sections = new Sections(); чтобы при каждом вызове тэга TreeSet заполнялся заново из БД. А то получалось что TreeSet инициализировался один раз при развёртывании приложения, отсюда и TreeSet повторно заполнялся обновлёнными данными из БД только после перезагрузки сервера и соответственно reload-a контекста. |