Link 返回查询不适用于 ContentBlocksFieldPlugin
Link back query not working for ContentBlocksFieldPlugin
我是 hippo cms 的新手,如果我使用的术语不正确,请见谅。
我遵循了这个 link 并使第一个查询正常工作 cms hippo docs
我有Master和Servant两种文档类型。
master doctypejava和yaml文件如下
@HippoEssentialsGenerated(internalName = "website:link")
public List<HippoBean> getLink() {
return getLinkedBeans("website:link", HippoBean.class);
}
yaml 代码
/link:
/cluster.options:
base.path: /content/documents
jcr:primaryType: frontend:pluginconfig
last.visited.enabled: true
nodetypes:
- website:servant
caption: Link
field: link
hint: ''
jcr:primaryType: frontend:plugin
plugin.class: org.hippoecm.frontend.editor.plugins.field.NodeFieldPlugin
wicket.id: ${cluster.id}.field
/link:
hipposysedit:mandatory: false
hipposysedit:multiple: true
hipposysedit:ordered: false
hipposysedit:path: website:link
hipposysedit:primary: false
hipposysedit:type: hippo:mirror
hipposysedit:validators:
- optional
jcr:primaryType: hipposysedit:field
Master 已经得到 linkedbean 到 link 到 servant doctype,如上所示。
现在在 Servant 文档类型中,我想显示主人的详细信息,所以我添加了一个查询,如下所示,它按预期工作。
public Master getParentDetails() {
final HstRequestContext context = RequestContextProvider.get();
try {
HstQuery linkedBeanQuery = ContentBeanUtils.createIncomingBeansQuery(
this.getCanonicalBean(), context.getSiteContentBaseBean(),
"*/website:link/@hippo:docbase",
Master.class, false);
linkedBeanQuery.setLimit(1);
return (Master) linkedBeanQuery.execute().getHippoBeans().nextHippoBean();
} catch (QueryException queryException) {
log.warn("QueryException ", queryException);
}
return null;
}
问题是当我将 Master 中的插件 class 更改为 plugin.class: org.onehippo.forge.contentblocks.ContentBlocksFieldPlugin
并添加复合列表 compoundList: website:junior
时停止工作并给出错误。
请注意,现在上面显示的 getlink() 方法和 link
yaml 代码已移动到一个名为 junior 的新化合物中。
Master 只是为了允许使用适当代码的初级的多个复合,如下所示。
@HippoEssentialsGenerated(internalName = "website:servantlink");
public List<HippoBean> getServantlink() {
return getLinkedBeans("website:servantlink", HippoBean.class);
}
yaml 代码
/servantlink:
/cluster.options:
jcr:primaryType: frontend:pluginconfig
nodetypes:
- website:servant
caption: groups
compoundList: website:junior
contentPickerType: links
field: servantlink
hint: ''
jcr:primaryType: frontend:plugin
plugin.class: org.onehippo.forge.contentblocks.ContentBlocksFieldPlugin
wicket.id: ${cluster.id}.field
wicket.skin: skin/content-blocks.css
/servantlink:
hipposysedit:mandatory: false
hipposysedit:multiple: true
hipposysedit:ordered: false
hipposysedit:path: website:servantlink
hipposysedit:type: hippo:compound
hipposysedit:validators:
- contentblocks-validator
jcr:primaryType: hipposysedit:fiel
所以我的问题是查询现在应该如何进行?
如有任何帮助,我们将不胜感激。提前致谢
在新情况下,您正在创建具有 link 的 website:junior 类型的化合物。因此,在传入的 bean 查询中,相应地更改“*/website:link/@hippo:docbase”。
希望对您有所帮助,
耶伦
所以终于成功了
高手javaclass应该如下。请注意在这里使用 getChildBeansByName 而不是 getLinkedBeans。
@HippoEssentialsGenerated(internalName = "website:servantlink");
public List<HippoBean> getServantlink() {
return getChildBeansByName("website:servantlink");
}
master.yaml没有变化,一切都很好。
现在Servant中的查询部分java class应该是这样的
final HstRequestContext context = RequestContextProvider.get();
try {
HstQuery linkedBeanQuery = ContentBeanUtils.createIncomingBeansQuery(
this.getCanonicalBean(), context.getSiteContentBaseBean(),
"website:servantlink/website:link/@hippo:docbase",
Master.class, false);
linkedBeanQuery.setLimit(1);
return (Master) linkedBeanQuery.execute().getHippoBeans().nextHippoBean();
} catch (QueryException queryException) {
log.warn("QueryException ", queryException);
}
return null;
}
最重要的部分是这个website:servantlink/website:link/@hippo:docbase
。
我是 hippo cms 的新手,如果我使用的术语不正确,请见谅。
我遵循了这个 link 并使第一个查询正常工作 cms hippo docs
我有Master和Servant两种文档类型。
master doctypejava和yaml文件如下
@HippoEssentialsGenerated(internalName = "website:link")
public List<HippoBean> getLink() {
return getLinkedBeans("website:link", HippoBean.class);
}
yaml 代码
/link:
/cluster.options:
base.path: /content/documents
jcr:primaryType: frontend:pluginconfig
last.visited.enabled: true
nodetypes:
- website:servant
caption: Link
field: link
hint: ''
jcr:primaryType: frontend:plugin
plugin.class: org.hippoecm.frontend.editor.plugins.field.NodeFieldPlugin
wicket.id: ${cluster.id}.field
/link:
hipposysedit:mandatory: false
hipposysedit:multiple: true
hipposysedit:ordered: false
hipposysedit:path: website:link
hipposysedit:primary: false
hipposysedit:type: hippo:mirror
hipposysedit:validators:
- optional
jcr:primaryType: hipposysedit:field
Master 已经得到 linkedbean 到 link 到 servant doctype,如上所示。
现在在 Servant 文档类型中,我想显示主人的详细信息,所以我添加了一个查询,如下所示,它按预期工作。
public Master getParentDetails() {
final HstRequestContext context = RequestContextProvider.get();
try {
HstQuery linkedBeanQuery = ContentBeanUtils.createIncomingBeansQuery(
this.getCanonicalBean(), context.getSiteContentBaseBean(),
"*/website:link/@hippo:docbase",
Master.class, false);
linkedBeanQuery.setLimit(1);
return (Master) linkedBeanQuery.execute().getHippoBeans().nextHippoBean();
} catch (QueryException queryException) {
log.warn("QueryException ", queryException);
}
return null;
}
问题是当我将 Master 中的插件 class 更改为 plugin.class: org.onehippo.forge.contentblocks.ContentBlocksFieldPlugin
并添加复合列表 compoundList: website:junior
时停止工作并给出错误。
请注意,现在上面显示的 getlink() 方法和 link
yaml 代码已移动到一个名为 junior 的新化合物中。
Master 只是为了允许使用适当代码的初级的多个复合,如下所示。
@HippoEssentialsGenerated(internalName = "website:servantlink");
public List<HippoBean> getServantlink() {
return getLinkedBeans("website:servantlink", HippoBean.class);
}
yaml 代码
/servantlink:
/cluster.options:
jcr:primaryType: frontend:pluginconfig
nodetypes:
- website:servant
caption: groups
compoundList: website:junior
contentPickerType: links
field: servantlink
hint: ''
jcr:primaryType: frontend:plugin
plugin.class: org.onehippo.forge.contentblocks.ContentBlocksFieldPlugin
wicket.id: ${cluster.id}.field
wicket.skin: skin/content-blocks.css
/servantlink:
hipposysedit:mandatory: false
hipposysedit:multiple: true
hipposysedit:ordered: false
hipposysedit:path: website:servantlink
hipposysedit:type: hippo:compound
hipposysedit:validators:
- contentblocks-validator
jcr:primaryType: hipposysedit:fiel
所以我的问题是查询现在应该如何进行?
如有任何帮助,我们将不胜感激。提前致谢
在新情况下,您正在创建具有 link 的 website:junior 类型的化合物。因此,在传入的 bean 查询中,相应地更改“*/website:link/@hippo:docbase”。
希望对您有所帮助, 耶伦
所以终于成功了
高手javaclass应该如下。请注意在这里使用 getChildBeansByName 而不是 getLinkedBeans。
@HippoEssentialsGenerated(internalName = "website:servantlink");
public List<HippoBean> getServantlink() {
return getChildBeansByName("website:servantlink");
}
master.yaml没有变化,一切都很好。 现在Servant中的查询部分java class应该是这样的
final HstRequestContext context = RequestContextProvider.get();
try {
HstQuery linkedBeanQuery = ContentBeanUtils.createIncomingBeansQuery(
this.getCanonicalBean(), context.getSiteContentBaseBean(),
"website:servantlink/website:link/@hippo:docbase",
Master.class, false);
linkedBeanQuery.setLimit(1);
return (Master) linkedBeanQuery.execute().getHippoBeans().nextHippoBean();
} catch (QueryException queryException) {
log.warn("QueryException ", queryException);
}
return null;
}
最重要的部分是这个website:servantlink/website:link/@hippo:docbase
。