我尝试为Magnolia版本6.1.3实现一个定制的VirtualUriMapping (RegexpVirtualUriMapping,但带有本地化)。不幸的是,我不能在轻量级模块(yaml定义)中使用我的类.我的类(I18nVirtualUriMapping.java)放在一个模块中,这是我的自定义webapp (magnolia community-webapp原型)的一个依赖项。我如何注册我的VirtualUriMapper?
这是自定义类I18nVirtualUriMapping.java (缩写):
package my.magnolia.module.mapping;
import info.magnolia.virtualuri.mapping.DefaultVirtualUriMapping;
public class I18nVirtualUriMapping extends DefaultVirtualUriMapping {
}光模块news-ROOT.yaml中虚拟uri映射的定义
class: my.magnolia.module.mapping.I18nVirtualUriMapping
fromUri: /news(.*).html
toUri: forward:/News-Detail.html?news=$1定义光模块中的映射,我得到这个错误。
2021-05-27 02:10:20,556 WARN agnolia.transformer.ClassPropertyBasedTypeResolver: Encountered the 'class' property but failed to resolved the type from its value: [my.magnolia.module.mapping.I18nVirtualUriMapping]
java.lang.ClassNotFoundException: my.magnolia.module.mapping.I18nVirtualUriMapping
at java.net.URLClassLoader.findClass(Unknown Source) ~[?:1.8.0_131]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_131]
...发布于 2021-05-27 18:40:50
经过长时间的搜索,我自己找到了解决方案。它是关于依赖注入(https://docs.magnolia-cms.com/product-docs/Modules/Dependency-injection-and-inversion-of-control.html)的。
public class I18nVirtualUriMapping extends DefaultVirtualUriMapping {
private static final Logger log = LoggerFactory.getLogger(I18nVirtualUriMapping.class);
private final I18nVirtualMappingModule module;
@Inject
public I18nVirtualUriMapping(final I18nVirtualMappingModule module) {
this.module = module;
}
//...
}https://stackoverflow.com/questions/67714269
复制相似问题