[英]<my:foo> Tag Library supports namespace: http://java.sun.com/jsf/composite/mycomponents, but no tag was defined for name: foo
[英]JSF 2.1.13 custom component not found: Tag Library supports namespace: <namsepace> but no tag was defined for name: <compositecomponent>
我正在使用JSF 2.1.13
创建一个原型来展示JSF对我们当前使用JSP
和struts 1.1
构建的webapp的好处。 我使用JSF 2.2.6
代码跟踪代码,但是一旦我发现Oracle Weblogic 12c还不支持JSF 2.2,我就不得不降级。 使用2.1.13运行代码时收到以下错误:
/pages/sites/tab-details.xhtml @27,90 <ccc:codedType> Tag Library supports namespace: http://java.sun.com/jsf/composite/ccc, but no tag was defined for name: codedType
谷歌搜索只指向我有关嵌套复合组件的错误 ,但这不是我正在做的事情。
pom.xml
<!-- JSF Dependencies -->
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.1.13</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.1.13</version>
</dependency>
webapp/WEB-INF/resources/ccc/codedType.xhtml
<?xml version="1.0" encoding="UTF-8"?>
<ui:component xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:cc="http://java.sun.com/jsf/composite">
<cc:interface shortDescription="Renders a CodedType">
<cc:attribute name="value" required="true"
shortDescription="Instance of CodedType to be properly rendered"
type="company.prototype.uireplacement.presenter.CodedType" />
<cc:attribute name="includeCode"
shortDescription="Whether or not the rendeder type should include the code"
type="boolean" default="false"/>
</cc:interface>
<cc:implementation>
<span id="#{cc.attrs.id}">#{cc.attrs.value.label}<ui:fragment rendered="#{cc.attrs.includeCode}"> (#{cc.attrs.value.code})</ui:fragment></span>
</cc:implementation>
</ui:component>
webapp/pages/sites/tab-details.xhtml
: webapp/pages/sites/tab-details.xhtml
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:ccc="http://java.sun.com/jsf/composite/ccc">
<ccc:codedType value="#{siteControllerBean.selectedSite.type}" includeCode="true"/>
</ui:composition>
经过多次挖掘后,我发现了导致我错误的原因。 请注意我的组件的位置: webapp/WEB-INF/resources/ccc/codedType.xhtml
。 适当的位置应该是webapp/resources/ccc/codedType.xhtml
(root vs WEB-INF
)。 在JSF 2.2中,他们允许位置可配置,我在web.xml
有以下内容:
<context-param>
<param-name>javax.faces.WEBAPP_RESOURCES_DIRECTORY</param-name>
<param-value>/WEB-INF/resources</param-value>
</context-param>
这就是为什么事情在JSF 2.2中有效。
我的情况的修复是删除javax.faces.WEBAPP_RESOURCES_DIRECTORY
因为它没有在JSF 2.1中使用并将资源移动到根目录。
我最近遇到了这个错误:请确保将模板放在位置src ../ META-INF / resources / myFolder并使用xmlns引用它:tp =“http://java.sun.com/jsf/composite/myFolder” >这帮助我解决了这个问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.