java - 我正在尝试从 ResourceResolverFactory 获取对 ResourceResolver 的引用,但得到 Null 指针异常
问题描述
Map<String, Object> param = new HashMap<String, Object>();
param.put(ResourceResolverFactory.SUBSERVICE,"datawrite");
log.info("param created.");
ResourceResolver resolver = null;
try {
resolver=resolverFactory.getResourceResolver(param);
log.info("resolveer created.");
Session session = resolver.adaptTo(Session.class);
log.info("Session created.");
// Create a node that represents the root node
Node root = session.getRootNode();
// Get the content node in the JCR
Node content = root.getNode("/content");
Node customerRoot = null;
int custRec = doesCustExist(content);
log.info("does Customer Exist : "+ custRec);
// -1 means that content/customer does not exist
if (custRec == -1) {
// content/customer does not exist -- create it
customerRoot = content.addNode("customer");
} else {
// content/customer does exist -- retrieve it
customerRoot = content.getNode("customer");
}
int custId = custRec + 1; // assign a new id to the customer node
// Store content from the client JSP in the JCR
Node custNode = customerRoot.addNode("customer" + firstName + lastName + phone+desc);
// make sure name of node is unique
custNode.setProperty("id", custId);
custNode.setProperty("firstName", firstName);
custNode.setProperty("lastName", lastName);
custNode.setProperty("phone", phone);
custNode.setProperty("desc", desc);
// Save the session changes and log out
session.save();
session.logout();
return custId;
}
catch (Exception e) {
log.error("RepositoryException: " + e);
}
我收到了这个错误:
错误[0:0:0:0:0:0:0:1 [1567433510240] GET /bin/abc HTTP/1.1] aem.community.mf.core.servlets.SaveJcrData RepositoryException: java.lang.NullPointerException
解决方案
如果您尝试在 Sling Model 中获取资源解析器,请使用以下注释。
@Inject
private ResourceResolver resourceResolver;
还要确保您的课程是从 AEM 调用的。为了根据我以前的遭遇进行更多解释,这里有一些例子:
自定义工作流程流程 - 使用 @Reference 注释,您将能够获取资源解析器,因为当工作流程到达步骤时,该流程是直接从 AEM 调用的
从另一个类 B 调用的 A 类 - 在这种情况下,资源解析器在 A 类中将为空,因为该类不是从 AEM 调用的
推荐阅读
- typescript - 打字稿递归中的动态导入vue文件
- ios - 卡在 IOS 推送通知 (Testflight)
- c# - 跨域请求在asp.net核心signalR中被阻止?
- django - 无法在 django-ckeditor 中配置 youtube 插件
- sql - 在 SQLite 中按组计算加权平均值
- typo3 - TYPO3 RTE 允许在 H 标签中使用粗体
- java - 使用云数据流写入 BigTable 时出错
- python - Jupyter notebook 在缓存中存储脚本?如何解决?
- vba - Userform VBA 在打印前选择打印机
- javascript - 错误:未定义不是反应原生的函数