JSF2自定义组件问题
问题描述:
我创建了一个用于xhtml视图的自定义组件,它使用Netbeans8.1和glassfish4.1在JSF 2.1中使用属性值并打印它(如下面的代码中的helloworld)。我通过扩展UIComponentBase重写的家族创建了一个自定义组件,并通过扩展UIComponentELTag覆盖componentType和rendererType方法来对开始和自定义组件标记类进行编码。我为它定义了一个标签库test.taglib.xml,并将其注册到web.xml中。JSF2自定义组件问题
以下是查看代码。
<?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文件)。
我尝试使用自定义组件标记直接或作为用户界面的组成部分,但没有运气。
我在自定义组件中放置了一个断点,并试图进行调试,但控制甚至没有进入断点。
由于控件不会出现断点,所以这意味着我的自定义组件没有被servlet注册?如果是这样,请告诉我我做错了什么。
我是JSF的新手,所以请告诉我,如果我错过任何一点。
我试着与JSF2.2.7相同,但也表现出同样的问题。
答
我找不到根本原因,但解决了我的问题。我使用JSF 2.2.7 jar的代码尝试了相同的代码,但是我使用了注释。 正如问题所述,它没有与2.2.7一起工作,是因为我使用旧时尚代码,如创建taglib并在部署描述符中更新它。