wicket - Wicket 8 AnnotatedMountScanner 不再工作
问题描述
从 Wicket 7 升级到 Wicket 8 后,页面安装不再起作用。
在 Wicket 7 中,我添加了
new AnnotatedMountScanner().scanPackage("com.example").mount(this);
在我的init()
方法中,我AuthenticatedWebApplication
在我的页面上添加了@MountPath("/mypage")
.
在 Wicket 8 中,这不再起作用,而不是/mypage
浏览器 URL 指向wicket/bookmarkable/com.example.MyPage
,但是当我手动添加
mountPage("AAA", MyPage.class);
它时。
这是我的所有检票口依赖项的类路径:
$ mvn 依赖:树 | grep 检票口 [INFO] +-
org.apache.wicket:wicket-core:jar:8.0.0:compile [INFO] | +-
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 [INFO] | +- 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 [INFO] | -
com.googlecode.wicket-jquery-ui:wicket-jquery-ui-core:jar:8.0.0-M7:compile
但我不想手动添加所有 mypages。是否也可以AnnotatedMountScanner
在 Wicket 8 中使用再次?
解决方案
事实证明这是一个类重新加载问题spring-boot devtools
。当spring-boot-devtools
被添加为依赖项时,RestartClassLoader
总是更改的页面类和 Wickets 页面类匹配是无序的。
调试后说明。当我的 BookmarkablePageLink 调用getURL()
它时,它会通过 RequestHandlers 的正常 Wicket 处理。
关键部分开始于Wicket 尝试通过调用页面类是否从匹配到内部表示的类AbstractBookmarkableMapper#382
来找出通过.checkPageClass
RequestHandler
MountedMapper
pageClassProvider
@Override
protected boolean checkPageClass(Class<? extends IRequestablePage> pageClass)
{
return Objects.equals(pageClass, this.getPageClass());
}
由于对象不一样(由于使用RestartClassLoader
),我的可收藏页面没有从MountedMapper
.
推荐阅读
- java - 如何读取文本文件的内容并检查它们在 Java 中是否有效
- angular - 使用 Angular 10 实现对讲
- python - 从时间模块获取输出作为列表
- html - 遍历数组时面临实现轮播的困难
- c++ - 是否可以使用 std::array 作为 hash_table 值,但大小不同
- javascript - Angular 9 FormModule 单元测试
- amazon-web-services - Gitlab CI 定价共享运行器与自托管 aws 运行器
- bash - 执行 tail -f 直到找到 BACKWARDS 模式
- javascript - 主题php联系表
- python - AttributeError: __enter__ 尝试从 MySQL 查询时出错