用于自定义文档类型的HippoCMS组件不调用文档bean

时间:2015-03-24 02:27:30

标签: java hippocms

我在HippoCMS 7.9站点中创建了一个名为SampleCaps的复合文档类型,并着手为其构建模板。在此过程中,我添加了hst:sitemap个节点,一对嵌套的hst:pages节点和一个hst:templates节点。我还在type添加了相应的hippo:namespaces/barcom/SampleCaps属性。

最后,我创建了一个Component和一个Bean,将文档数据公开给模板,调整了Hippo Video Trails第2部分中的步骤。

令我沮丧的是,当Component正确加载时,Bean永远不会被加载(或者至少,它的getter永远不会被调用。)我的组件和bean如下:

网站/ SRC /主/ JAVA / COM / footech / barcom /组件/ 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 */ 
    }
}

网站/ SRC /主/ JAVA / COM / footech / barcom /豆类/ 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包装 - 这似乎不是这种情况,因为调试控制台打印{ {1}}但不是Ping。我做错了什么?

1 个答案:

答案 0 :(得分:2)

你需要调用document.getTitle(),因为值是延迟加载的。