2010-10-29 2 views
1

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

ответ

2

Мы также используем комбинацию потока страниц шва и GWT. В явной форме мы разделим страницу входа на главной странице, чтобы разрешить вход через https. Но мы не используем обычные html-страницы, мы по-прежнему используем xhtml-страницы. Вы можете включать в HTML-страницу 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> 

С помощью такой Seam завернутых HTML-страницы, вы не имеете никаких проблем для определения переходов страниц.

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

+0

не могли бы вы помочь мне с простым примером вашего кода. –

+0

Меня особенно интересует, как вы сопоставляете действия перехода по потоку страницы с действиями кнопки gwt. –

+0

@ Если вы не можете сопоставить поток страниц с кнопкой GWT. Связь между клиентом GWT и сервером Seam проходит через вызовы async GWT-RPC. Шов обрабатывает thosecalls с GWTService. Как отметили @ z00bs и @Peter Knego, используя приложение GWT, вы не переключаетесь между разными страницами. Мы используем переходы страницы Seam, чтобы решить, какая часть нашего приложения GWT предоставляется клиенту. Если клиент уже зарегистрирован, мы делаем main.xhtml иначе home.xhtml. Для получения дополнительной информации о Seam + GWT читайте http://docs.jboss.org/seam/2.2.0.GA/reference/en-US/html/gwt.html – kraftan

1

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

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

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

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

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

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

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

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

1

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

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

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

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

Смежные вопросы