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