java中initui,java – Vaadin中用于Spring UI的SpringViewProvider

我试图在我的vaadin应用程序中实现spring视图,但是我在SpringViewProvider上获得了一个NPE(“无法添加空视图提供程序”).这是我的代码:

@SpringUI(path = "permalink")

@Theme("myTheme")

public class PermalinkUI extends UI {

@Autowired

private SpringViewProvider springViewProvider;

private Navigator navigator;

@Override

protected void init(VaadinRequest request) {

final VerticalLayout root = new VerticalLayout();

root.setSizeFull();

root.setMargin(true);

root.setSpacing(true);

setContent(root);

final Panel viewContainer = new Panel();

viewContainer.setSizeFull();

root.addComponent(viewContainer);

root.setExpandRatio(viewContainer, 1.0f);

navigator = new Navigator(this, viewContainer);

navigator.addProvider(springViewProvider);

setNavigator(navigator);

setContent(root);

我还尝试使用ViewDisplay而不是单个组件容器(root),但结果相同.我还实现了一个测试视图来导航到:

@SpringView(name = "test")

public class PermalinkTest extends VerticalLayout implements View {

@Override

public void enter(ViewChangeListener.ViewChangeEvent event) {

removeAllComponents();

String params = event.getParameters();

addComponent(new Label(params));

}

}

我在写这个URL“localhost:8080 / permalink / test时得到这个NPE.

我错过了什么? SpringViewProvider不应该自动装配吗?

关心约翰

解决方法:

使用vaadin-spring-2.0.0时,SpringNavigator是一个托管的@UIScope-ed bean,因此可以直接注入. (如果你不需要,你根本不需要注入SpringViewProvider.)

此外,您必须手动初始化SpringNavigator实例以防止NullPointerException:

@SpringUI

public class SampleUi extends UI {

@Inject

private SpringNavigator navigator;

@Override

protected void init(VaadinRequest request) {

navigator.init(this, this); // Explicit init() call

navigator.navigateTo(StartView.NAME);

}

}

标签:java,spring,vaadin

来源: https://codeday.me/bug/20190609/1201759.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值