【问题标题】:Resource Resolver for Composite Components复合组件的资源解析器
【发布时间】:2013-10-16 23:04:09
【问题描述】:
有人可以解释一下 MyFaces 中的责任,以弄清楚什么是资源/复合组件。我看到这种奇怪的行为,其中 div、li 等 html 标签试图被解析为复合组件。我看到类加载器正在寻找 {mycompositecomponentnamespace}/div.xhtml、{mycompositecomponentnamespace}/li.xhtml 等
本质上,我的问题是,myfaces如何知道哪个标签需要被视为复合组件的资源查找,而哪个标签作为标准html标签被忽略
【问题讨论】:
标签:
jsf-2
facelets
composite-component
【解决方案1】:
简而言之,该算法只是按照 JSF 规范所说的去做。如果与库关联的命名空间具有复合组件资源库,则 facelets 算法会按照 JSF 2.0 资源处理程序算法扫描复合组件。在 JSF 2.2 中,也进行了更改以包括资源库合同。 MyFaces 如何在代码中做到这一点是它自己实现的一部分,但它遵循规范中提出的算法。
【解决方案2】:
MyFaces2.0.2 和 2.0.3 在尝试使用 SAXParser 解析 Facelet 时会尝试在 Classloader 中查找每个标签作为资源。我原以为它会很聪明地意识到需要查找什么以及什么是标准 HTML 标记。