2013-02-27 50 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); 
     } 
} 

公司简介模板

@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 2013-02-27 16:22:27

+0

组件直接插入根DOM元素,因此没有页面重新加载。所以改变的是AnotherPage复合组件被渲染来代替PrevousPage组件。与在gwt中一样,通常只有一个入口点.html,然后在不重定向到另一个页面的情况下进行导航。 – 2013-02-27 16:39:03

+0

当我这样做时,我得到这个错误:org.jboss.errai.ioc.client.container.IOCResolutionException:没有匹配的bean实例:org.jboss.errai.ui.demo.client.local.App - > where App是使用Page和Templated注释的应用程序 – xybrek 2013-02-27 16:46:14