Sling Model与JCR Node的关系

Component下的name属性的./name代表什么含义?

为什么偏偏是./name呢?表示当前目录下的name。
其实当你写完组件以后,组件会被一个页面所引用。
你到content目录下找到那个页面。实则所有组件内的数据都会在该页面上,我们也应该去页面上取内容。
一般是不会跑到组件里去取内容的。
所以./代表的是那个页面的目录。

理解注解

@Self
private Resource currentResource;

@ScriptVariable
private Page currentPage;

debug一下,如果我没记错的话

  • Resource资源路径是指Component的路径
  • Page路径则是指页面路径

怎么知道谁引用了他们?

起初我一直在想,我写个Resource他怎么知道我想找那个路径下的内容呢?在Sling Model里指示?
原来!
哪个组件的页面调用了他们,他们就指向了哪个页面!
真,恍然大悟。
你在页面上用HTL写data-sly-use....

理解注解II

@ValueMapValue
private String fileReference;

@SlingObject
private ResourceResolver resourceResolver;
  • @Inject包含了很多内容,所以单单是找值的话,用@ValueMapValue即可。所以这些值也都是去页面上取的,而不是组件上。就是根据./name去页面上找
  • ResourceResolver有个getResource方法,可以通过指定路径去查找对应的结点
  • 拿到一个Resource后可以.getValueMap().get()拿到对应的值

另学习了几个常用IDE的快捷方式

ctrl + U //debug模式下查看变量
ctrl + H //全文件搜索关键字
shift + shift //搜索文件名
posted @ 2021-01-22 09:25  lwxx  阅读(160)  评论(0)    收藏  举报