Java 从控制器内部访问Magnolia TemplatingFunction

Java 从控制器内部访问Magnolia TemplatingFunction,java,magnolia,Java,Magnolia,是否可以根据用户是否处于编辑模式提供不同的体验?我注意到以下方法存在;但是,它不是静态的: info.magnolia.templating.functions.TemplatingFunctions.isEditMode() 有没有办法从控制器内部访问isEditMode()方法?是否在某个可以访问的地方定义了它的实例?我认为创建TemplatingFunctions类的新实例不会有帮助 我已经研究了如何使用@Inject;然而,我在注入所有参数时不断遇到问题 @Inject public

是否可以根据用户是否处于编辑模式提供不同的体验?我注意到以下方法存在;但是,它不是静态的:

info.magnolia.templating.functions.TemplatingFunctions.isEditMode()
有没有办法从控制器内部访问isEditMode()方法?是否在某个可以访问的地方定义了它的实例?我认为创建
TemplatingFunctions
类的新实例不会有帮助

我已经研究了如何使用
@Inject
;然而,我在注入所有参数时不断遇到问题

@Inject
public ModelAndView renderView(Model model, Node node, TemplatingFunctions templatingFunctions) throws RepositoryException {
    if (templatingFunctions.isEditMode()) {

    }
}

当我检查该方法的功能时,我发现它是两个函数的组合

Components.getComponent(ServerConfiguration.class).isAdmin()

似乎您应该注入一个提供者来了解用户是否处于预览模式

Provider<AggregationState> aggregationStateProvider
进一步阅读请访问


希望这能有所帮助,

@ducaz035对此有什么想法吗?这肯定有帮助。我们这样做的方式是不使用@Autowire或@Inject服务,而是使用
TemplatingFunctions TemplatingFunctions=Components.getComponent(TemplatingFunctions.class)如果可以通过Components.getComponent()获得它,那么注入它也应该没有问题。我怀疑在这种情况下其他字段可能不可注入:)但很高兴这有帮助
Provider<AggregationState> aggregationStateProvider
<component>
  <type>info.magnolia.templating.functions.TemplatingFunctions</type>
  <implementation>info.magnolia.templating.functions.TemplatingFunctions</implementation>
  <scope>singleton</scope>
</component>