使用ECMA脚本向节点(页面)添加新属性
add a new property to a node(page) using ECMA script
我需要为页对页激活添加一个属性。我决定在激活步骤之前建立一个工作流流程。我的自定义工作流步骤(激活步骤之前的步骤)使用ECMA脚本来实现这一点。这是我迄今为止所拥有的。
var workflowData = graniteWorkItem.getWorkflowData();
if (workflowData.getPayloadType() == "JCR_PATH") {
var path = workflowData.getPayload().toString();
var jcrsession = graniteWorkflowSession.adaptTo(Packages.javax.jcr.Session);
var node = jcrsession.getNode(path);
if (!node.hasProperty("foo")){
var cal = Packages.java.util.Calendar.getInstance();
node.setProperty("foo", cal);
node.save();
}
if (!node.hasProperty("foo2")){
node.setProperty("foo2", "2020-08-26T22:30:00.000+05:30");
node.save();
}
}
然而,当我在页面上运行工作流时,我需要创建的属性(本例中为foo和foo2)不会被创建。
我做错了什么?
您是否尝试跟踪您的error.log?我试过你的脚本,但它不起作用——不过这个特定版本起作用了:
var workflowData = workItem.getWorkflowData();
if (workflowData.getPayloadType() == "JCR_PATH") {
var path = workflowData.getPayload().toString();
var jcrsession = workflowSession.getSession();
var node = jcrsession.getNode(path);
if (!node.hasProperty("foo")){
var cal = Packages.java.util.Calendar.getInstance();
node.setProperty("foo", cal);
node.save();
}
if (!node.hasProperty("foo2")){
node.setProperty("foo2", "2020-08-26T22:30:00.000+05:30");
node.save();
}
}
请注意,它不是花岗岩*,而是workItem和workSession。还要注意,WorkflowSession没有adapto()方法(除非我使用的是比您旧的cq版本)。它已经有一个getSession()方法作为接口的一部分。
即使说了这么多,但由于我通过工作流发送的内容,这也失败了——请确保要写入的节点接受这些属性名称。cq:Page是非常严格的,但cq:PageContent不是(所以检索jcr:content子节点,假设您针对cq:Page或dam:Asset节点启动工作流):
var node = jcrsession.getNode(path).getNode("jcr:content");
相关文章:
- 为for循环中的对象添加新属性
- 调用ko.applyBindings后,向Knockout视图模型添加新属性
- 如何向JSON数组添加新属性
- 在对象上迭代并添加新属性
- 在knocket js中应用绑定后,向视图模型添加新属性
- 如何在 CKEditor 表的单元格属性中添加新属性
- 无法向 Mongoose 查询返回的对象添加新属性
- 是否可以向现有 JSON 数据添加新属性
- 和服:修改数据、分解字符串和添加新属性的功能
- 何时使用“原型”一词向 javascript 中的对象添加新属性
- 我的 JS 对象迭代在添加新属性时中断
- 使用ECMA脚本向节点(页面)添加新属性
- 无法向对象添加新属性
- 向konvajs组对象添加新属性
- 如何查找具有指定名称的属性并添加新属性
- 无法向 JavaScript 数组中的对象添加新属性
- 如何向标记添加新属性
- 向窗口对象-js添加新属性时得到通知
- 向DOM元素添加新属性与扩展DOM元素原型
- 在 JavaScript 中使用 (this) 关键字添加新属性