首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SlingModel没有正确映射JCR

SlingModel没有正确映射JCR
EN

Stack Overflow用户
提问于 2016-06-06 08:20:06
回答 2查看 144关注 0票数 2

我有一个叫SlingModel的TextModel

代码语言:javascript
复制
@Model(adaptables=Resource.class, defaultInjectionStrategy= DefaultInjectionStrategy.OPTIONAL)
public class TextModel {

    @Inject
    private String heading;

    @Inject
    private String description;

    public String getHeading() {
        return heading;
    }

    public String getDescription() {
        return description;
    }
}

我在Sightly中也有一个模板,它呈现组件:

代码语言:javascript
复制
<div data-sly-use.model="project.components.slingmodels.text.TextModel" data-sly-unwrap/>
<div>
    <p>PageModel component</p>
    <h1>${model.heading}</h1>
    <p>Description: ${model.description}</p>
</div>

然后,我将组件嵌入到页面中:

<div data-sly-resource="${@ resourceType='project/components/textModel'}" data-sly-unwrap></div>

并通过JSON创建初始的JCR结构:

代码语言:javascript
复制
{
    "jcr:primaryType": "nt:unstructured",
    "sling:resourceType": "project/pages/page",
    "title" : "Welcome page",
    "jcr:content" : {
        "myContent" : {
            "jcr:primaryType": "nt:unstructured",
            "sling:resourceType" : "project/components/textModel",
            "heading": "Heading",
            "description": "test description"
        }
    }
}

所有字段都正确地保存在JCR中,但是我的Sling模型返回null作为headingdescription的值。

但是,当我创建这样的内容时:

代码语言:javascript
复制
{
    "jcr:primaryType": "nt:unstructured",
    "sling:resourceType": "project/pages/page",
    "title" : "Welcome page",
    "heading": "Heading",
    "description": "test description",
    "jcr:content" : {
        "myContent" : {
            "jcr:primaryType": "nt:unstructured",
            "sling:resourceType" : "project/components/textModel"
        }
    }
}

它起作用了。JSON存储在jcr_root/content/hello.json下,存储在我的项目文件中,我在浏览器中打开localhost:8080/content/hello.html URL。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-06 15:16:16

您应该将您的组件包含在正确的路径中,否则路径指向当前资源,此资源是当前页面的jcr:content。

代码语言:javascript
复制
<div data-sly-resource="${ @path='componentPath', 
resourceType='project/components/textModel'}" data-sly-unwrap></div>
票数 1
EN

Stack Overflow用户

发布于 2016-07-21 20:20:55

我建议使用:

代码语言:javascript
复制
<div data-sly-resource="${'myContent' @ resourceType='project/components/textModels'}" data-sly-unwrap></div>

甚至更好:

代码语言:javascript
复制
<sly data-sly-resource="${'myContent' @ resourceType='project/components/textModels'}"></sly>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37652615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档