从控制器内部访问 Magnolia TemplatingFunctions
Accessing Magnolia TemplatingFunctions from inside a controller
是否可以根据用户是否处于编辑模式提供不同的体验?我注意到存在以下方法;然而它不是静态的:
info.magnolia.templating.functions.TemplatingFunctions.isEditMode()
有没有办法从控制器内部访问 isEditMode() 方法?它的实例是否定义在某个可以访问的地方?我想创建 TemplatingFunctions
class 的新实例不会有帮助...
我看过使用 @Inject
;但是我一直在注入所有参数时遇到问题。
@Inject
public ModelAndView renderView(Model model, Node node, TemplatingFunctions templatingFunctions) throws RepositoryException {
if (templatingFunctions.isEditMode()) {
}
}
当我检查该方法的作用时,我发现它是两个函数的组合。
Components.getComponent(ServerConfiguration.class).isAdmin()
和
aggregationStateProvider.get().isPreviewMode()
看来你应该注入一个提供者来了解用户是否处于预览模式
Provider<AggregationState> aggregationStateProvider
笼统地说,可以从myModule/src/main/resources/META-INF/mymodule.xml
下的相关模块配置中了解组件是否可注入。如果那里列出了一个组件,那么它是否可以注入其他 类。例如,注入 TemplatinFunctions
类型应该没有问题,因为它确实被定义为;
<component>
<type>info.magnolia.templating.functions.TemplatingFunctions</type>
<implementation>info.magnolia.templating.functions.TemplatingFunctions</implementation>
<scope>singleton</scope>
</component>
进一步阅读可以在 https://documentation.magnolia-cms.com/display/DOCS/Dependency+injection+and+inversion+of+control
找到
希望这对您有所帮助,
是否可以根据用户是否处于编辑模式提供不同的体验?我注意到存在以下方法;然而它不是静态的:
info.magnolia.templating.functions.TemplatingFunctions.isEditMode()
有没有办法从控制器内部访问 isEditMode() 方法?它的实例是否定义在某个可以访问的地方?我想创建 TemplatingFunctions
class 的新实例不会有帮助...
我看过使用 @Inject
;但是我一直在注入所有参数时遇到问题。
@Inject
public ModelAndView renderView(Model model, Node node, TemplatingFunctions templatingFunctions) throws RepositoryException {
if (templatingFunctions.isEditMode()) {
}
}
当我检查该方法的作用时,我发现它是两个函数的组合。
Components.getComponent(ServerConfiguration.class).isAdmin()
和
aggregationStateProvider.get().isPreviewMode()
看来你应该注入一个提供者来了解用户是否处于预览模式
Provider<AggregationState> aggregationStateProvider
笼统地说,可以从myModule/src/main/resources/META-INF/mymodule.xml
下的相关模块配置中了解组件是否可注入。如果那里列出了一个组件,那么它是否可以注入其他 类。例如,注入 TemplatinFunctions
类型应该没有问题,因为它确实被定义为;
<component>
<type>info.magnolia.templating.functions.TemplatingFunctions</type>
<implementation>info.magnolia.templating.functions.TemplatingFunctions</implementation>
<scope>singleton</scope>
</component>
进一步阅读可以在 https://documentation.magnolia-cms.com/display/DOCS/Dependency+injection+and+inversion+of+control
找到希望这对您有所帮助,