使用自订组件

在Component与Tag自订完成后,这边来看看如何使用它们,首先定义faces-config.xml:
faces-config.xml
<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE faces-config PUBLIC "-//Sun Microsystems,
  Inc.//DTD JavaServer Faces Config 1.0//EN"
 "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
 <faces-config>
    <component>
        <component-type>
            onlyfun.caterpillar.TextWithCmd
        </component-type>
        <component-class>
            onlyfun.caterpillar.UITextWithCmd
        </component-class>
    </component>
    <managed-bean>
        <managed-bean-name>someBean</managed-bean-name>
        <managed-bean-class>
            onlyfun.caterpillar.SomeBean
        </managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
 </faces-config>

  <component>中定义Component的型态与实际的类别对应,在您于自订Tag中呼叫 getComponentType()方法所返回的值,就是寻找<component-type>设定的值对应,并由此得知真正对应的 Component类别。

  我们所撰写的SomeBean测试类别如下:

SomeBean
package onlyfun.caterpillar;

 public class SomeBean {
    private String data;

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }
 }

  这边写一个简单的网页来测试一下我们撰写的自订组件:

index.jsp
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
 <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
 <%@ taglib uri="/WEB-INF/textcmd.tld" prefix="oc" %>
 <html>
 <link href="styles.css" rel="stylesheet" type="text/css"/>
 <head>
 <title></title>
 </head>
 <body>
 <f:view>
     <h:form>
     Input data: <oc:textcmd size="10"
                             value="#{someBean.data}"/>
     </h:form>
     <h:outputText value="#{someBean.data}"/>
 </f:view>
 </body>	
 </html>