Seam GWT переход на страницу потока - PullRequest
1 голос
/ 29 октября 2010

пытаюсь интегрировать, шов и GWT.Мне было интересно, если можно указать HTML-страниц в потоке страниц Seam.Является ли это возможным ?Если да, что будет означать название в транскрипции?

Ответы [ 3 ]

2 голосов
/ 29 октября 2010

Мы также используем комбинацию потока страниц Seam и GWT. Явно мы отделяем страницу входа от главной страницы, чтобы разрешить вход через https. Но мы не используем обычные HTML-страницы, мы по-прежнему используем HTML-страницы. Вы можете включить hwml-страницу GWT в xhtml-страницу Seam, обернув пару <html></html> парой <f:view></f:view>:

<f:view
    contentType="text/html"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:s="http://jboss.com/products/seam/taglib"
    xmlns:ui="http://java.sun.com/jsf/facelets">
    <html>
        <!-- ... -->
    </html>
</f:view>

Используя такую ​​HTML-страницу, обернутую швом, у вас не будет проблем с определением переходов страниц.

Как уже отметил Питер Кнего, для разных (x) html-страниц рекомендуется использовать разные модули GWT.

1 голос
/ 29 октября 2010

Это сильно зависит от того, чего вы пытаетесь достичь. То есть, планируете ли вы создать настольное одностраничное приложение, в котором большая часть состояния удерживается клиентом, или основная логика, а также HTML-страницы предоставляются сервером.

Если вы выберете приложение, похожее на настольное, вы, скорее всего, полностью создадите клиентское приложение с помощью GWT. Для первоначального запроса Seam возвращает простую html-страницу, которая выбирает .nocache.js, которая в свою очередь загружает скомпилированный основной скрипт .cache.html вашего приложения. Отсюда GWT вступает во владение (начиная с onModuleLoad() в EntryPoint загруженного модуля) и создает весь макет вашего приложения, заменяя тег <body> возвращенной HTML-страницы. Взаимодействие с пользователем и состояние синхронизируются через сервер, но рендеринг выполняется GWT.

Если вы выберете комбинацию Seam и JSF, вы все равно сможете воспользоваться GWT. Обычный сценарий - выборочная вставка виджетов GWT в определенные места на существующей html-странице (подробности см. здесь ). Таким образом, вы можете использовать Seam для рендеринга, потока страниц и т. Д. И расширять свои страницы с помощью виджетов GWT.

Кстати, если вам нужен SSL для регистрации и / или аутентификации пользователя (и автоматического заполнения формы!), Я настоятельно рекомендую сделать это в соответствии с рекомендациями @kraftan. Все остальное - боль.

1 голос
/ 29 октября 2010

Обычно GWT - это клиентское приложение с отслеживанием состояния.Это означает, что вы запускаете все приложение на одной html-странице.Браузер никогда не перезагружает эту страницу.Если браузер перезагрузит эту страницу, то внутреннее состояние приложения будет потеряно (переменные и т. Д.).

Теперь вы, безусловно, можете создать приложение GWT с несколькими html-страницами.Обычно вы создаете разные модули GWT и загружаете их в отдельные html-страницы.Плагин Eclipse создает страницу хоста для каждого модуля.

Вы можете создать обычное приложение Seam, просто скопируйте необходимые строки со страниц хоста GWT на ваши "страницы" Seam.

Просто имейте в виду, чтоэти отдельные модули GWT не имеют общего состояния между ними.

Отредактировано:

Вы можете сопоставить поток страницы шва с кнопками GWT так, что нажатие кнопки приведет вас к следующей страницев потоке страниц:

  1. Создайте кнопку GWT с обработчиком onClick, который содержит Window.Location.assign (URL) .Нажатие на эту кнопку откроет данный URL на текущей странице браузера.
  2. Сделайте URL-адреса страниц потока Seam удобочитаемыми.Я полагаю (не эксперт в этом), это сделано с атрибутом view-id="page_url" внутри <page> элемента.

Это ручной процесс (не типобезопасный), который зависит от того, правильно ли вы используете view-idс URL-адресами в кнопках.Изменение на одной стороне потребует от вас ручной корректировки другой стороны.Чтобы сделать жизнь немного проще, вы можете создать функцию, добавляющую слушателя в кнопку (или любой другой элемент в GWT).

...