Состояние страницы динамической формы JSTL / JSP - PullRequest
1 голос
/ 24 января 2011

Работая над большим веб-приложением, у меня есть куча JSP.Каждый JSP включает (ТОЛЬКО) набор внутренних тегов, например:

<AAA:INPUT value="bbb" state="<%=getPageState()"/>

Этот тег отображается в поле ввода HTML с состоянием только для чтения, основываясь на возвращаемом значении getPageState ().

Это в основном позволяет мне установить полную страницу включенной / отключенной из одной точки входа.

Мне это не нравится (в основном потому, что это отвлекает меня от написания HTML Iхочу и мне нужно поддерживать атрибуты для каждого HTML-атрибута, который я хочу), я знаю, что могу сделать что-то похожее на стороне клиента с помощью JavaScript.Существуют ли другие подходы для контроля состояния полной формы JSP в одной точке на стороне веб-сервера?

1 Ответ

1 голос
/ 25 января 2011

Я бы хотел сделать так, чтобы метод getPageState() преобразовался в тег, а затем использовал этот тег в ваших пользовательских тегах. Таким образом, вам не нужно явно передавать состояние страницы при каждом вызове вашего пользовательского тега.

Конечно, это означает, что вам придется изменить все свои пользовательские теги, чтобы использовать этот новый тег, но я думаю, что это лучше, чем заполнять ваш код явными вызовами, чтобы получить состояние страницы. Не говоря уже о возможном несоответствии, если разработчик забыл проверить состояние страницы.

Кроме того, теперь решение относительно того, как элемент должен быть визуализирован, лежит в самом пользовательском теге (где он принадлежит).

Единственная проблема, которую я вижу, состоит в том, что теперь вам нужно сделать несколько (избыточных) вызовов для каждого элемента, чтобы получить состояние страницы, что не так эффективно. Чтобы обойти эту проблему, вы можете настроить свой пользовательский тег (который получает состояние страницы) на атрибут страницы, и пользовательские теги могут проверить этот атрибут страницы, чтобы решить, должен ли элемент формы быть отключен или нет (другим способом было бы создать переменную с областью действия AT_END).

...