【发布时间】:2014-03-03 15:49:00
【问题描述】:
我在我的项目中添加了一个通用 JAR。这个罐子看起来像......
CommonWeb.jar
|-- META-INF
| |-- resources
| | `-- common
| | |-- css
| | | `-- my.css
| | |-- js
| | | `-- my.js
| | |-- images
| | | `-- my.png
| | |-- components
| | | `-- mycomposite.xhtml
| | `-- templates
| | `-- mytemplate.xhtml
| |-- faces-config.xml
| `-- MANIFEST.MF
:
一切正常,只是 Netbeans 无法识别我的复合组件。尝试使用该组件的页面看起来像这样......
<ui:composition template="/resources/common/templates/mytemplate.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:cmn="http://java.sun.com/jsf/composite/common/components">
<ui:define name="content">
...
<cmn:mycomposite ... />
...
</ui:define>
</ui:composition>
项目会编译运行,不用担心。但是 IDE 在 <cmn:mycomposite ... /> 上给了我红色的波浪线,并且不会自动完成等。如果我将组件复制到项目自己的资源文件夹中,一切都会正常工作,所以看起来 netbeans 只是不看 jar .
有很多类似问题的问题,例如:
- JSF Composite Component into JAR in NetBeans
- JSF Composite Component Netbeans
- Composite components in an external JAR are not recognized in Netbeans
...但是没有令人满意的解决方案或变通方法。
还有一些关于此事的 netbeans 错误报告,但这些似乎都已“修复”
我缺少一些配置吗?有没有人真正设法使用最新版本的 NetBeans(撰写本文时为 NetBeans 7.4 Patch 2)来实现这一点?有没有人找到真正有效的解决方法?
更新:
此问题在 NetBeans 8 中继续出现
【问题讨论】:
-
我不做Netbeans,所以我现在不能自己尝试写一个可靠的答案。我只能建议自己尝试一件事:创建一个
/META-INF/foo.taglib.xml,其中根据此问答明确声明 JAR 中包含的复合组件的新命名空间:stackoverflow.com/questions/22247914/… 然后,尝试在 Netbeans 中使用新的 XML 命名空间。至少,这是通常的“组件库”应该如何工作的,我很难想象 Netbeans 也不会考虑到它们。 -
@BalusC 在
*.taglib.xml中声明namespace和composite-library-name并不能解决问题。 -
为了确定,taglib 在 JAR 中(不在 WAR 中),并且您确实将使用页面中的 XML 命名空间更改为 taglib 中声明的命名空间?
-
是的,这里一切都很好。此外,项目编译和运行没有任何问题,只是恼人的问题是 NetBeans 无法识别复合组件,从而将页面标记为错误。当taglib.xml中显式定义了一些标签时,NetBeans也没有问题,问题只是与组合组件有关,在
*.taglib.xml中没有显式定义,而是通过<composite-libraray-name>的用法定义 -
问题在 Netbeans 8.1 中继续存在 netbeans.org/bugzilla/show_bug.cgi?id=257684
标签: jsf jsf-2 netbeans jar composite-component