Как передать параметры и перейти к управляемому компоненту Spring с настраиваемым видом области?

Я хотел бы дать вам некоторый контекст в первую очередь.

Контекст

В настоящее время я занимаюсь разработкой веб-приложения с использованием среды Spring, где я хотел бы предоставить пользователям возможность отображать / редактировать различные экземпляры модели одного и того же типа сущности на отдельных вкладках. Для отображения и извлечения атрибутов этих объектов я использую управляемые bean-компоненты Spring с соответствующими экземплярами объекта передачи данных и аннотированными экземплярами реализации сервисного уровня @Autowired для сохранения данных.

Из-за того, что я знаю, что бины области действия Spring не подходят для редактирования с несколькими вкладками, а бины области запроса не могут содержать отправленные данные "достаточно долго" для повторного отображения, я реализовал "пользовательские" бины представления с областью действия. Кажется, это хорошо работает для отображения и редактирования нескольких страниц одного типа (и объектов на них) и для хранения данных, пока методы действия bean-компонента возвращают void / null.

Навигация между страницами в настоящее время осуществляется с помощью возвращаемого значения типа String целевой страницы в методах действия bean-компонента, отправляемых в такие компоненты, как h:commandLink и h:commandButton, которые должны быть разрешены с помощью JSF или с помощью простых ссылок html.

Эта проблема

Как вы перемещаетесь с помощью одной кнопки h:link/h: на другую страницу и ТАКЖЕ передаете ее параметры для отображения компонентом области просмотра Spring после приземления страницы?

Есть ли способ, как сначала перенаправить на другую страницу - например, со страницы со списком системных пользователей, а затем отобразить сведения о пользователе, переданном со стартовой страницы?

Вопросы для ответа и возможные решения?

Если я правильно понял и реализовал это, они уже управляются и внедряются с помощью Spring, поэтому они не могут работать точно так же, как компоненты JSF ViewScoped, поэтому я не могу легко использовать их атрибуты, аннотированные как управляемые JSF, и передавать им значения параметров для отображения их на детали / редактировать страницу ПОСЛЕ навигации к ней. Когда я пытаюсь это сделать, это приводит к сообщению об ошибке "CDI @ViewScoped bean функциональность недоступна". Я думаю, что по той же причине использование аннотированных JSF-компонентов @ManagedBean и f:viewParam на целевой странице не работает. Это верно?

Я попытался передать параметр в функцию bean-объекта области видимости Spring с возвращаемым значением целевой страницы, но очевидно (?) Бин воссоздается после приземления на него с пустыми параметрами. Попытка определить правило навигации для действия bean-объекта области видимости Spring с типом возврата void и именем целевой страницы также не сработала. Похоже, что bean-компонент Spring не был распознан в face-config.xml. Это так?

Должен ли я использовать какой-то более долгоживущий метод Spring bean-компонента для вызова представления, ограниченного одним конструктором с правильными параметрами? Но как я могу предотвратить воссоздание вида боба видимости после перенаправления?

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

Передача и извлечение защищенных параметров с помощью bean-объекта вида с URL-адреса представляется мне не самой лучшей практикой безопасности. Но я также использую роли Spring Security в пользовательском интерфейсе, уровне обслуживания и перехвате URL, а также AOP в моих методах обслуживания для проверки владельца полученных данных. Будет ли использование какого-либо идентификатора данных в URL единственным возможным решением? Это худшее / лучшее решение с точки зрения безопасности, чем использование сессионных компонентов?

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

0 ответов

Другие вопросы по тегам