Смешивание JSP и JSF - PullRequest
       37

Смешивание JSP и JSF

4 голосов
/ 04 сентября 2008

Я немного уточню. С Jsf очень тяжело работать с точки зрения дизайнера, в некоторой степени пытаясь нарисовать картинку, когда руки связаны за спиной, но он хорош для пережевывания форм и перечисления большого количества данных. Таким образом, сайты, которые мы создаем в моей компании, это страницы администрирования jsf и страницы пользователей jsp. Проблема возникает, когда пользовательские страницы имеют сложные формы и прочее, и jsf начинает работать.

Вот вопрос: я на чистой странице JSP. Мне нужно получить доступ к странице JSF, которая использует сессионный компонент. Как я могу инициализировать этот компонент? Если бы я был на странице jsf, у меня мог бы быть некоторый commandLink, который подготовил бы данные. Единственное, что я могу придумать, это наличие фиктивной jsf-страницы, которая сделает всю работу и перенаправит меня на нужную jsf-страницу, но это уродливо, и я не хочу в итоге получить 50 фиктивных страниц. Я предпочел бы найти какой-нибудь механизм для повторной инициализации bean-компонента, который уже работает с некоторыми требуемыми параметрами.

Редактировать: некоторые подробности. В этой конкретной ситуации у меня есть полные или отфильтрованные тесты. Это тот же тест с той же логикой и всем, кроме того, что если тест отфильтрован, он должен устранить некоторые вопросы в зависимости от ответов. При нажатии на ссылку, он должен начать запрошенный тест в одном из двух режимов. Ссылки являются частью главного меню и видны на многих страницах JSP. Моя задача состоит в том, чтобы иметь 4 ссылки: testA заполнен, testA отфильтрован, testB заполнен, testB отфильтрован, чтобы все лиды на одной и той же странице jsf и TestFormBean должны были быть соответственно инициализированы.

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

Ответы [ 5 ]

4 голосов
/ 04 сентября 2008

Вы изучали использование лицевых панелей? Это позволяет избавиться от различий в JSF / JSP (это альтернативный и превосходный контроллер представления).

Он также поддерживает отличную семантику времени разработки с тегом jsfc ...

<input type="text" jsfc="#{SomeBean.property}" class="foo" />

внутренне переводится на правильный материал JSF, поэтому вы можете работать с существующими инструментами.

3 голосов
/ 16 сентября 2008

Вы можете получить управляемый компонент внутри библиотеки тегов, используя что-то вроде этого:

FacesContext context = FacesContext.getCurrentInstance();
Object myBean = context.getELContext().getELResolver().getValue(context.getELContext(), null, "myBeanName");

Однако вам нужно использовать библиотеку тегов на одной из ваших страниц JSF. FacesContext.getCurrentInstance () возвращает ноль, когда он вызывается вне FacesServlet.

1 голос
/ 15 сентября 2008

Чтобы решить эту проблему, я бы, вероятно, создал фрагмент JSF, включающий только вашу форму, а затем использовал бы тег <c:import>, чтобы включить его в мою страницу JSF.

Это решение, вероятно, немного хрупкое в зависимости от вашей среды.

РЕДАКТИРОВАТЬ: См. Ответ Криса Холла, FacesContext недоступен за пределами FacesServlet.

0 голосов
/ 16 сентября 2008

На самом деле, я решил эту проблему, удалив bean-компонент из сессии, поэтому он должен быть сгенерирован заново при вызове страницы jsf Затем я выбираю параметры get из запроса в конструкторе.

0 голосов
/ 16 сентября 2008

Создание собственного обработчика тегов JSP. Затем вы можете извлечь компонент из области действия сеанса и затем инициализировать его на лету. Смотрите этот учебник для более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...