我需要阅读.yaml
文件中所述的属性(例如banner.yaml
)。应该在java类中读取这些属性,以便可以访问它们并明智地执行操作。
这是我的label.yaml
文件
/content/documents/administration/labels:
jcr:primaryType: hippostd:folder
jcr:mixinTypes: ['mix:referenceable']
jcr:uuid: 7ec0e757-373b-465a-9886-d072bb813f58
hippostd:foldertype: [new-resource-bundle, new-untranslated-folder]
/global:
jcr:primaryType: hippo:handle
jcr:mixinTypes: ['hippo:named', 'mix:referenceable']
jcr:uuid: 31e4796a-4025-48a5-9a6e-c31ba1fb387e
hippo:name: Global
如何在一个java类中访问hippo:name
属性,该属性应该将Global
作为值返回?
任何帮助将不胜感激。
答案 0 :(得分:1)
您无法从应用程序中读取yaml文件。 yaml文件在存储库中引导。您显示的数据代表资源包。您可以使用实用程序类ResourceBundleUtils #getBundle
以编程方式访问它或者在模板上使用。然后你可以正常使用键。
我强烈建议您在继续之前按照我们的教程进行操作。
这里有更多细节: https://www.onehippo.org/library/concepts/translations/hst-2-dynamic-resource-bundles-support.html
答案 1 :(得分:1)
创建一个扩展BaseHstComponent的类,它允许您使用HST Content Bean的
创建会话对象,为此您需要拥有存储库的有效凭据。
Session session = repository.login("admin", "admin".toCharArray());
现在,创建javax.jcr.Node的对象,为此需要relPath到.yaml文件。
在您的情况下,它将是/content/documents/administration/labels/global
Node node = session.getRootNode().getNode("content/articles/myarticle");
现在,通过使用getProperty方法,您可以访问该属性。
node.getProperty("hippotranslation:locale");
您可以参考链接https://www.onehippo.org/library/concepts/content-repository/jcr-interface.html