Java 自定义文档类型的HippoCMS组件未调用文档bean

Java 自定义文档类型的HippoCMS组件未调用文档bean,java,hippocms,Java,Hippocms,我在HippoCMS 7.9站点中创建了一个名为SampleCaps的复合文档类型,并着手为其构建模板。在这个过程中,我添加了hst:sitemap节点、一对嵌套的hst:pages节点和一个hst:templates节点。我还向hippo:namespaces/barcom/SampleCaps添加了相应的type属性 最后,我创建了一个组件和一个Bean,以将文档数据公开给模板,从而适应Hippo视频教程第2部分中介绍的步骤 令我沮丧的是,虽然组件正确加载,但Bean从未加载(或者至少从未调

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

最后,我创建了一个组件和一个Bean,以将文档数据公开给模板,从而适应Hippo视频教程第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 */ 
    }
}
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");
    }
}
site/src/main/java/com/footech/barcom/beans/SampleCapsDocument.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 */ 
    }
}
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”)
应该向编译器提示,内容节点应该用samplecapsdocumentbean包装-情况似乎并非如此,因为调试控制台打印
Ping
,而不是
Pong
。我做错了什么?

您需要调用document.getTitle(),因为这些值是惰性加载的。

如果这样做有效,我将自发地变成僵尸,吃掉自己的大脑。昨晚我试过,但这是在修复我的站点地图中的问题之前,我从未想过再试一次。在玩了很多次之后,我意识到我的
sitemapitem
节点缺少其
hst:componentconfigurationid
值。修复此问题后,我确定无论使用
request.setAttribute()
设置什么属性,它们在JSP上下文中都不可用。。。即使传递字符串文本也不起作用。通过调试器检查请求变量似乎表明没有保存属性。有什么想法吗?我在第二条评论中描述的问题是一个不相关的配置问题(hst:componentclassname属性是在hst:pages/SampleCaps节点中设置的,而不是应该设置的hst:pages/SampleCaps/main)。Marijan的答案毕竟是正确的。