【发布时间】:2015-03-24 02:27:30
【问题描述】:
我在 HippoCMS 7.9 站点中创建了一个名为 SampleCaps 的复合文档类型,并着手为其构建模板。在这个过程中,我添加了hst:sitemap 节点、一对嵌套的hst:pages 节点和一个hst:templates 节点。我还将适当的type 属性添加到hippo:namespaces/barcom/SampleCaps。
最后,我创建了一个组件和一个 Bean 来将文档数据暴露给模板,并调整了 Hippo Video Trails 第 2 部分中介绍的步骤。
令我沮丧的是,当组件正确加载时,从未加载过 Bean(或者至少从未调用过它的 getter。)我的组件和 bean 如下:
site/src/main/java/com/footech/barcom/components/SampleCapsComponent.java:
package com.footech.barcom.components;
import com.footech.barcom.beans.SampleCapsDocument;
import org.hippoecm.hst.content.beans.standard.HippoBean;
import org.hippoecm.hst.component.support.bean.BaseHstComponent;
import org.hippoecm.hst.core.component.HstComponentException;
import org.hippoecm.hst.core.component.HstRequest;
import org.hippoecm.hst.core.component.HstResponse;
public class SampleCapsComponent extends BaseHstComponent {
@Override
public void doBeforeRender(final HstRequest request, final HstResponse response) throws HstComponentException {
SampleCapsDocument document = request.getRequestContext().getContentBean();
request.setAttribute("document", document);
System.out.println("Ping"); /* prints "Ping" to console */
}
}
site/src/main/java/com/footech/barcom/beans/SampleCapsDocument.java:
package com.footech.barcom.beans;
import java.util.Calendar;
import org.hippoecm.hst.content.beans.Node;
import org.hippoecm.hst.content.beans.standard.HippoHtml;
import org.onehippo.cms7.essentials.dashboard.annotations.HippoEssentialsGenerated;
@HippoEssentialsGenerated(internalName = "barcom:SampleCapsdocument")
@Node(jcrType = "barcom:SampleCapsdocument")
public class SampleCapsDocument extends BaseDocument {
@HippoEssentialsGenerated(internalName = "barcom:title")
public String getTitle() {
System.out.println("Pong"); /* This never triggers */
return getProperty("barcom:title");
}
}
据我了解,SampleCapsComponent.java 中的注解 @Node(jcrType = "barcom:SampleCapsdocument") 应该向编译器提示内容节点应该用 SampleCapsDocument bean 包装 - 情况似乎并非如此,因为调试控制台会打印 Ping但不是Pong。我做错了什么?
【问题讨论】: