我创建了一个在xhtml视图中使用的自定义组件,它使用属性值并使用Netbeans8.1和glassfish4.1在JSF 2.1中打印它(如下面代码中的helloworld)。我通过扩展UIComponentBase重写族来创建自定义组件,并通过扩展UIComponentELTag覆盖componentType和rendererType方法来编码begin和custom组件标记类。我为它定义了一个标记库test.taglib.xml并在web.xml中注册了它。
以下是观看代码。
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html">
<h:body>
<h2>JSF Custom Input FacesComponent Example</h2>
<h:form>
<ui:composition
xmlns:custom="http://packt.net/cookbook/components"
xmlns:ui="http://java.sun.com/jsf/facelets">
<custom:testInput helloworld="test component!!"/>
</ui:composition>
</h:form>
</h:body>
</html>
问题是 - 它只显示html值而不显示自定义组件属性值。
当我尝试使用jsp视图(使用tld文件)时,同样的示例也适用。
我尝试直接使用自定义组件标签或作为ui的子项:组合但没有运气。
我在自定义组件中设置了一个断点并尝试调试,但控制甚至没有进入断点。
由于控制不会破坏点,所以它意味着我的自定义组件没有被servlet注册?如果是这样,请告诉我我做错了什么。
我是JSF的新手所以请告诉我我是否遗漏了任何一点。
我尝试使用JSF2.2.7,但也出现了同样的问题。
答案 0 :(得分:0)
我无法找到根本原因,但解决了我的问题。我尝试使用JSF 2.2.7 jar相同的代码,但我使用了注释。 正如在2.2.7中没有使用的问题所提到的那样,是因为我使用旧时尚代码,比如创建taglib并在部署描述符中更新它。