Использование GWT с SEAM - PullRequest
       9

Использование GWT с SEAM

0 голосов
/ 11 августа 2011

Я хочу использовать GWT с seam Framework, поэтому я добавляю jar gwt-user-2.2.0.jar в свой проект. но когда я вызываю любой метод из представления (страница HTML), возникает это исключение:

Причина: java.lang.UnsupportedOperationException: ОШИБКА: GWT.create () можно использовать только в коде клиента! Его нельзя вызвать, например, из кода сервера. Если вы запускаете модульный тест, убедитесь, что ваш тестовый пример расширяет GWTTestCase и что GWT.create () не вызывается из инициализатора или конструктора. на com.google.gwt.core.client.GWT.create (GWT.java:92) на com.google.gwt.user.client.ui.UIObject. (UIObject.java:188) ... еще 84

Я использую seam v2.2, могу выложить код:

    @Name("scheduleHandler1")
public class SheduleHandler1 implements Serializable,EntryPoint
{   
public void onModuleLoad() {
        MyPopup p = new MyPopup();

            RootPanel.get().add(p);
          }

Из моего представления в формате HTML я вызываю этот метод:

 <h:commandLink value="showPopup" action="#{scheduleHandler1.onModuleLoad}" />

Спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 12 августа 2011

GWT и Seam могут фактически работать вместе, как вы можете видеть на этой странице в Справочной документации по шву .

Однако, как это выглядит, и где вы пытаетесь это сделатьпроблема в том, что вы пытаетесь смешать JSF и GWT.Вы пытаетесь вызвать действие Seam из JSF, где это действие вызывает некоторый код GWT.Следовательно, ваш код на стороне сервера вызывает код GWT на стороне клиента, и вы получаете исключение, которое говорит GWT.create() is only usable in client code! It cannot be called, for example, from server code.Я не уверен, почему вы пытаетесь это сделать.

JSF - это технология на стороне клиента, написанная на XHTML.GWT также является технологией на стороне клиента, написанной на Java.Я не уверен, как они взаимодействуют друг с другом.

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

0 голосов
/ 11 августа 2011

GWT - это технология на стороне клиента - код, который вы пишете, компилируется в js + html и выполняется внутри браузера.

OTOH, SEAM - это технология на стороне сервера - код, который вы пишете, выполняется на сервере, когда выполняется запрос и создается HTML, который возвращается обратно в браузер для отображения.

В этом смысле GWTи шов не идут хорошо вместе.Скорее всего, вы не можете смешивать код в одном модуле компиляции.

Вы могли бы использовать Seam для REST на стороне сервера и GWT на стороне клиента для использования REST, но это имеет смыслесли у вас уже был существующий код Seam REST.

Если вы написали некоторый код GWT и хотите включить его в свои html-страницы (статические или созданные Seam), то используйте их в качестве хост-страниц GWT - вы просто включаететег script для включения JS-кода GWT на страницу: http://code.google.com/webtoolkit/doc/latest/DevGuideOrganizingProjects.html

...