标签: jcr

从CQ5中获取一个节点形式currenPage

我有一个组件需要从同一页面上的另一个组件获取属性.

有没有办法从中获取组件的NODE对象currentPage

我在代码中获取了我需要获取的节点的名称.

jcr aem

4
推荐指数
1
解决办法
2万
查看次数

无法从吊索模型获取/设置数据

我们有吊带模型.例如

@Model(adaptables=Resource.class)
public class MyModel {

@Inject
private String propertyName;
}
public Image getPropertyName) {
    return propertyName;
}
Run Code Online (Sandbox Code Playgroud)

我们还添加了

<Sling-Model-Packages>
  org.apache.sling.models.it.models
</Sling-Model-Packages>
Run Code Online (Sandbox Code Playgroud)

在此之后,我们可以打开该组件的编辑对话框并检查是否插入了一些数据.我们可以在JCR中看到这些数据但是当我们试图通过Sightly获取propertyName的内容时

<div class="feature-wrapper" data-sly-use.model="org.apache.sling.models.it.models.MyModel">
<div data-sly-test="${model.propertyName}" data-sly-unwrap>
Run Code Online (Sandbox Code Playgroud)

model.propertyName将为空

任何想法或建议?我如何调试Sling?

任何人都可以在这篇文章中添加标签"Sightly"吗?

model jcr sling aem sightly

4
推荐指数
2
解决办法
2198
查看次数

自定义JCR(Jackrabbit)节点属性类型

我想enum在长耳兔中使用常量作为属性值.但是,Node.setProperty()它只接受基本类型StringValue属性值类型.

我查看了ValueFactory界面,但这似乎也无法帮助我.


换句话说,我想这样做:

node.setProperty("name", Enum.Const);
Run Code Online (Sandbox Code Playgroud)

而不是这个:

node.setProperty("name", Enum.Const.toString());
Run Code Online (Sandbox Code Playgroud)

提前致谢.

java jackrabbit jcr

3
推荐指数
1
解决办法
4142
查看次数

在常见的x86硬件上水平扩展存储库

我想知道你们是否有任何提示哪些存储库实现在常见硬件上具有良好的聚类和水平扩展特性?

问题是我们必须在存储库之上实现保存系统,该存储库能够使用大文件(> 50GB)摄取和管理大量异构数据(> 500 TB).

Fedora Commons似乎只能通过使用分布式文件系统进行集群.Apache Jackrabbit可以是集群的,但其DataStore(对于大型二进制数据)必须与集群环境中的所有节点相同.你们有什么提示我应该查看哪些存储库系统?

scalability repository jcr fedora-commons

3
推荐指数
1
解决办法
310
查看次数

从JCR仓库访问资源数据

使用sling资源接口我试图访问保存为二进制属性的数据到我的JCR节点.目前我正在通过以下方式进行操作,即返回null值.

Resource dataResource = resourceResolver.getResource("/testNode/A/test.txt");
ValueMap properties = dataResource.adaptTo(ValueMap.class);        

String expected = properties.get("jcr:data").toString(); // null
InputStream content = (InputStream) actualProp.get("jcr:data");  // null 
Run Code Online (Sandbox Code Playgroud)

任何人都可以让我知道缺少什么,或者读取jcr:data属性的最佳方法是什么,它以二进制数据的形式出现.dataResource是一个非结构化的:非结构化的.

它显示的输出是: - org.apache.sling.jcr.resource.internal.helper.LazyInputStream@4f4c8085

java jackrabbit jcr sling aem

3
推荐指数
1
解决办法
8995
查看次数

SQL2 - 获取子节点属性

这似乎是一个相当简单的查询,但我一直在敲打我的头几个小时.我有一个类似于下面的节点结构:

food-group
    jcr:content
        nuts -> type=almonds
        meat -> beef=true
        fruit -> type=apples,oranges,bananas
Run Code Online (Sandbox Code Playgroud)

我需要从子节点收集三种类型的属性:一个是字符串,布尔和字符串数组.我认为以下sql2查询将工作并获取它们的属性,但无论出于何种原因我收到错误:

QUERY

SELECT 
    parent.* 
FROM 
    [cq:PageContent] AS parent 
INNER JOIN 
    [nt:base] as child ON ISCHILDNODE(parent) 
WHERE 
    ISDESCENDANTNODE(parent, [/content/grocerystore/food/])"
Run Code Online (Sandbox Code Playgroud)

错误:

Need to specify the selector name because the query contains more than one selector.
Run Code Online (Sandbox Code Playgroud)

感谢任何帮助,因为我过去几天一直在这里.

jcr jcr-sql2 aem

3
推荐指数
1
解决办法
5740
查看次数

如何在JCR SQL2查询中转义动态生成的String值?

让我假装我有一个像这样的JCR 2查询字符串:

String sql2Query = "SELECT * FROM [cq:PageContent] " +
                   "WHERE [aProperty] <> \" + aValue + "\"";
Run Code Online (Sandbox Code Playgroud)

是否有帮助方法可以逃脱aValue

顺便说一句,我已经知道在SQL2中我们可以使用占位符进行查询,让框架为我们处理值的转义,但如果我要动态创建这个查询,我怎么能逃避aValue以防止SQL注入以及建立破碎的查询?

java jackrabbit jcr jcr-sql2

3
推荐指数
1
解决办法
1759
查看次数

连接到AEM 6.0 JCR:前提条件失败

我在AEM 6.0中连接到JCR存储库时遇到了一些问题.当我到达创建一个session关于repostory 的点时,我得到了一个javax.jcr.lock.LockException: Precondition Failed.

我一直在使用本教程开始.

这是我非常简单的代码示例:

import java.io.FileNotFoundException;
import java.io.FileReader;

import javax.jcr.Repository;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;

import org.apache.jackrabbit.commons.JcrUtils;

import com.opencsv.CSVReader;


public class Main { 

    public static void main(String[] args) throws FileNotFoundException {
        Repository repository;
        FileReader fileReader;
        CSVReader csvReader;

        try {
            System.out.println("connecting to repository");
            repository = JcrUtils.getRepository("http://localhost:4502/crx/server");

            Session session = repository.login( new SimpleCredentials("admin", "admin".toCharArray())); // throws javax.jcr.lock.LockException: Precondition Failed

        }
        catch(Exception e) {
            System.out.println(e);
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

任何指导将不胜感激.

java jcr http-status-code-412 aem

3
推荐指数
1
解决办法
790
查看次数

javax.jcr.InvalidItemStateException:无法保存项目

我在单盒 cq5 作者环境中遇到以下异常。

javax.jcr.InvalidItemStateException: Item cannot be saved 
because node property has been modified externally
Run Code Online (Sandbox Code Playgroud)

更多异常详情:

Caused by: javax.jcr.InvalidItemStateException: Unable to update a stale item: item.save()
    at org.apache.jackrabbit.core.ItemSaveOperation.perform(ItemSaveOperation.java:262)
    at org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:216)
    at org.apache.jackrabbit.core.ItemImpl.perform(ItemImpl.java:91)
    at org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:329)
    at org.apache.jackrabbit.core.session.SessionSaveOperation.perform(SessionSaveOperation.java:65)
    at org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:216)
    at org.apache.jackrabbit.core.SessionImpl.perform(SessionImpl.java:361)
    at org.apache.jackrabbit.core.SessionImpl.save(SessionImpl.java:812)
    at com.day.crx.core.CRXSessionImpl.save(CRXSessionImpl.java:142)
    at org.apache.sling.jcr.resource.internal.helper.jcr.JcrResourceProvider.commit(JcrResourceProvider.java:511)
    ... 215 more
Caused by: org.apache.jackrabbit.core.state.StaleItemStateException: 3bec1cb7-9276-4bed-a24e-0f41bb3cf5b7/{}ssn has been modified externally
    at org.apache.jackrabbit.core.state.SharedItemStateManager$Update.begin(SharedItemStateManager.java:679)
    at org.apache.jackrabbit.core.state.SharedItemStateManager.beginUpdate(SharedItemStateManager.java:1507)
    at org.apache.jackrabbit.core.state.SharedItemStateManager.update(SharedItemStateManager.java:1537)
    at org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:400)
    at org.apache.jackrabbit.core.state.XAItemStateManager.update(XAItemStateManager.java:354)
    at org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:375)
    at org.apache.jackrabbit.core.state.SessionItemStateManager.update(SessionItemStateManager.java:275)
    at org.apache.jackrabbit.core.ItemSaveOperation.perform(ItemSaveOperation.java:258)
Run Code Online (Sandbox Code Playgroud)

这是代码示例:

adminResourceResolver = resourceResolverFactory
                .getAdministrativeResourceResolver(null);
Resource fundPageResource …
Run Code Online (Sandbox Code Playgroud)

jackrabbit jcr sling aem

3
推荐指数
1
解决办法
2268
查看次数

为什么 CONTAINS 在 JCR-SQL2 中发现不相等的文本字符串?

使用 JCR-SQL2 查询时,我注意到CONTAINS操作符找到的节点与条件中的字符串不完全相同。

例子

以下查询:

SELECT * FROM [nt:base] AS s WHERE CONTAINS(s.*, 'my/search-expression')
Run Code Online (Sandbox Code Playgroud)

不仅会找到包含my/search-expression字符串的节点,还会找到带有像my/another/search/expression.

为什么查询不能只找到提供的确切字符串?如何更改以缩小结果范围?

这个问题旨在由我自己回答,用于知识共享 - 但可以随意添加您自己的答案或改进现有答案。

jcr jcr-sql2

3
推荐指数
1
解决办法
3015
查看次数