2013-02-27 2 views
0

Я пытаюсь выяснить, как делать «вкладки» с помощью Errai-UI.Вкладки с Errai-UI

Например, если выбрана вкладка #home, отображается шаблон Home или если #about отображается шаблон AboutUs.

У меня есть этот класс точки входа:

@Templated("#home") 
@EntryPoint 
public class App extends Composite { 
     @PostConstruct 
     public void setup() 
     { 
      RootPanel.get().clear(); 
      RootPanel.get("rootPanel").add(this); 
     } 
} 

шаблон ABOUTUS

@Templated("#about") 
public class AboutUs extends Composite { 
     @PostConstruct 
     public void setup() { 
      RootPanel.get("rootPanel").clear(); 
      RootPanel.get("rootPanel").add(this); 
     } 
} 

ответ

1

Чтобы включить навигацию, вы должны инициализировать навигации компонент в точке входа. Каждая страница должна содержать аннотацию @Page(path = "pageName"). Переключение между вкладками возможно только с помощью url, добавляющего #pageName или с помощью специального компонента (см. Ниже).

Смотрите пример:

Наследование навигационный модуль

<inherits name="org.jboss.errai.ui.nav.Navigation"/> 

Реализовать точку входа

@EntryPoint 
public class Bootstrap 
{ 

    @Inject 
    Navigation navigation; 


    @PostConstruct 
    public void buildUI() 
    { 
     navigation.getContentPanel().setWidth("100%"); 
     navigation.getContentPanel().setHeight("100%"); 
     RootPanel.get().add(navigation.getContentPanel()); 
    } 

} 

Реализовать страницу

@Templated 
@Page(path = "myPage", startingPage = true) 
public class MyPage extends Composite 
{ 
    ... 
} 

Чтобы добавить "ссылку" в другой compone nt вы можете использовать следующую инъекцию:

@Inject 
private TransitionTo<MyPage> myPageTransition; 

... 
myPageTransition.go(); // load MyPage 
... 
+0

С аннотацией @Page, например MyPage, она правильно загрузит MyPage.html? для AnotherPage он правильно загрузит AnotherPage.html? – xybrek

+0

Компоненты вставлены прямо в корневой элемент DOM, поэтому перезагрузка страницы отсутствует. Итак, что изменилось, так это то, что композитный компонент AnotherPage отображается вместо компонента PrevousPage. Как и в gwt, у вас обычно есть только одна точка входа .html, а затем навигация происходит без перенаправления на другую страницу. –

+0

Когда я это делаю, я получаю эту ошибку: org.jboss.errai.ioc.client.container.IOCResolutionException: нет соответствующих экземпляров bean для: org.jboss.errai.ui.demo.client.local.App -> где Приложение - это приложение с аннотацией страницы и шаблона. – xybrek