我在一个SampleCaps 7.9站点中创建了一个名为HippoCMS的复合文档类型,并开始为它构建一个模板。在此过程中,我添加了hst:sitemap节点、一对嵌套的hst:pages节点和一个hst:templates节点。我还将适当的type属性添加到hippo:namespaces/barcom/SampleCaps中。
最后,我创建了一个组件和一个Bean来向模板公开文档数据,并调整了Hippo视频Trails第2部分中提出的步骤。
令我沮丧的是,虽然组件正确地加载了Bean,但从来没有加载过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中的注释SampleCapsComponent.java应该向编译器提示内容节点应该用SampleCapsDocument bean包装--情况似乎并非如此,因为调试控制台打印的是Ping,而不是Pong。我做错了什么?
发布于 2015-03-24 13:54:56
您需要调用document.getTitle(),因为值是延迟加载的。
https://stackoverflow.com/questions/29223992
复制相似问题