gpt4 book ai didi

java - 在 Magnolia 中使用模型

转载 作者:行者123 更新时间:2023-11-30 07:16:08 24 4
gpt4 key购买 nike

假设我有一个如下所示的 Controller :

@Controller
@Template(id= HomePageTemplate.ID, title = "Home Page")
public class HomePageTemplate {

public static final String ID = "project:pages/home-page";

@RequestMapping("/home-page")
public String render(Model model, Node node) {

model.addAttribute("meta", new MetaModel(node));
}
}

我希望能够将 MetaModel 与 TemplatedFunctions 和其他 Magnolia 项目结合使用 - 但我不确定如何从该模型内部访问内容映射:

public class AbstractModel {

protected Node node;

protected TemplatingFunctions tf;

public AbstractModel(Node node, @Inject TemplatingFunctions tf) {
this.node = node;
this.tf = tf;
}

public function getTitle() {
return tf.get("metaTitle");
}
}

关于如何注入(inject)模板函数有什么想法吗?

最佳答案

不要使用new MetaModel(node),而是使用

info.magnolia.objectfactory.Components.newInstance(MetaModel.class, node)

为了创建模型的新实例。 TemplateFunctions 将自动注入(inject)。

另一种选择是将 TemplateFunctions 作为 Spring bean 公开,位于 @Configuration 类中的某个位置:

@Bean
public TemplatingFunctions templatingFunctions() {
return Components.getComponent(TemplatingFunctions.class);
}

只需在 Spring Controller 中 Autowiring bean,并向 MetaModel 类添加一个新的构造函数:

@Controller
@Template(id= HomePageTemplate.ID, title = "Home Page")
public class HomePageTemplate {

@Autowired
private TemplatingFunctions cmsfn;

public String render(Model model, Node node) {
model.addAttribute("meta", new MetaModel(node, cmsfn));
}
}

关于java - 在 Magnolia 中使用模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38374935/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com