【发布时间】:2020-03-11 13:08:12
【问题描述】:
我使用 maven 安装了 Magnolia,并成功构建和部署了项目。我还可以创建 yaml 模板和组件。
我想创建 Java 模型来访问外部数据库并添加业务逻辑,但找不到在哪里创建类,并且该领域的文档并不广泛。
在 Netbeans IDE 中,项目树中没有 src 目录。当我创建一个包和一个 jave 类时,我在 tomcat 中得到一个错误:
问题详情:由于缺少类而无法解析类属性:[newpackage.NewClass]
我应该在哪里创建类?
更新:
我在一个单独的 Java 项目中创建了这些类,并在 web-inf/lib 中放置了一个 jar。 现在我没有得到缺少的类错误,而是得到一个渲染转换错误
类:
package com.example;
public class NewClass {
public String getText() {
return "Hello Magnolia!";
}
}
YAML:
modelClass: com.example.NewClass
模板:
<h1>${model.getText()}</h1>
错误:
RenderException: java.lang.ClassCastException: com.example.NewClass 无法转换为 info.magnolia.rendering.model.RenderingModel
更新 2:
我修改了类以将 magnolia RenderingModelImpl 扩展为:
package com.example;
import info.magnolia.module.templating.RenderingModel;
import info.magnolia.module.templating.RenderingModelImpl;
import info.magnolia.rendering.template.configured.ConfiguredTemplateDefinition;
import javax.jcr.Node;
import javax.jcr.PathNotFoundException;
import javax.jcr.RepositoryException;
public class NewClass extends RenderingModelImpl {
public NewClass(Node content, ConfiguredTemplateDefinition definition, RenderingModel<?> parent) throws PathNotFoundException, RepositoryException {
super(content, definition, parent);
}
public static String getText() {
return "Hello World!";
}
}
现在构造函数中的super语句不编译显示和报错:
incompatible types: Node cannot be converted to Content
【问题讨论】:
标签: magnolia