Wicket 8 AnnotatedMountScanner 不再工作



从 Wicket 7 升级到 Wicket 8 后,页面挂载不再起作用。

在检票口 7 中,我添加了

new AnnotatedMountScanner().scanPackage("com.example").mount(this);

在我AuthenticatedWebApplicationinit()方法 在我的页面上,我添加了@MountPath("/mypage").

在 Wicket 8 中,这不再起作用,而不是/mypage浏览器 URL 指向wicket/bookmarkable/com.example.MyPage,但是当我手动添加
mountPage("AAA", MyPage.class);时它可以工作。

这是我包含所有检票口依赖项的类路径:

$ mvn 依赖:树 | grep 检票口 [信息] +-

org.apache.wicket:wicket-core:jar:8.0.0:编译 [信息] | +-
org.apache.wicket:wicket-request:jar:8.0.0:compile [INFO] | +-
org.apache.wicket:wicket-util:jar:8.0.0:compile [INFO] +-org.wicketstuff:wicketstuff-annotation:jar:8.0.0:compile [INFO]
+-
org.apache.wicket:wicket-spring:jar:8.0.0:compile [INFO] | -org.apache.wicket:wicket-ioc:jar:8.0.0:compile [INFO] +-org.apache.wicket:wicket-datetime:jar:8.0.0-M7:compile [INFO] +-


org.apache.wicket:wicket-auth-roles:jar:8.0.0:compile [INFO] +-
de.agilecoders.wicket:wicket-bootstrap-core:jar:2.0.2:compile [INFO]
| +- de.agilecoders.wicket:jquery-selectors:jar:2.0.0:compile [信息] | +- de.agilecoders.wicket.webjars:wicket-webjars:jar:2.0.7:compile [INFO] | +- org.apache.wicket:wicket-extensions:jar:8.0.0:compile [INFO] +- de.agilecoders.wicket:wicket-bootstrap-extensions:jar:2.0.2:compile
[INFO] +-com.googlecode.wicket-jquery-ui:
wicket-jquery-ui-plugins:jar:8.0.0-M7:compile [信息] | -com.googlecode.wicket-jquery-ui:wicket-jquery-ui-core:jar:8.0.0-M7
:compile

但我不想手动添加所有我的页面。是否可以在 Wicket 8 中再次使用该AnnotatedMountScanner

原来是spring-boot devtools的类重新加载问题。 将spring-boot-devtools添加为依赖项时,RestartClassLoader始终更改页面类,并且 Wickets 页面类匹配顺序不正确。

调试后的说明。 当我的BookmarkablePageLink调用getURL()时,它经历了RequestHandlers的正常Wicket处理。

关键的部分始于AbstractBookmarkableMapper#382,Wicket 试图通过调用checkPageClass来找出RequestHandler中的页面类是否与通过pageClassProvider内部表示的MountedMapper类匹配。

@Override
protected boolean checkPageClass(Class<? extends IRequestablePage> pageClass)
{
return Objects.equals(pageClass, this.getPageClass());
}

由于对象不同(由于使用了RestartClassLoader(,我的书签页面没有从MountedMapper获取URL。

相关内容

  • 没有找到相关文章

最新更新