为UIInput创建自定义渲染器

时间:2013-12-06 05:00:45

标签: jsf custom-component

我想为UIInput组件创建自定义渲染器。 Et SourcePackage我创建了Renderers包和类Renderers.TextFieldRenderer,后面是

@FacesRenderer(componentFamily = "javax.faces.UIInput", rendererType = "text")
public class TextFieldRender extends Renderer {

    @Override
    public void encodeBegin(FacesContext context, UIComponent component) throws IOException {
        ResponseWriter writer = context.getResponseWriter();
        String clientId = component.getClientId(context);
        String hint= (String) component.getAttributes().get("placeholder");
        writer.startElement("input", component);
        writer.writeAttribute("name", clientId, null);
        writer.writeAttribute("placeholder", hint, "hint");
        writer.endElement("input");
    }
}

此外我创建了faces-config.xml

<faces-config
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
    version="2.0">
    <component>
        <component-type>mp.text</component-type>
        <component-class>javax.faces.component.UIInput</component-class>
    </component>
    <render-kit>
        <renderer>
            <component-family>javax.faces.component.UIInput</component-family>
            <renderer-type>mp.textrender</renderer-type>
            <renderer-class>Renderers.TextFieldRenderer</renderer-class>
        </renderer>
    </render-kit>
</faces-config>

text.taglib.xml

<?xml version="1.0" encoding="UTF-8"?>
<facelet-taglib>
    <namespace>http://text.com</namespace>
    <tag>
        <tag-name>hintText</tag-name>
        <component>
            <component-type>mp.text</component-type>
            <renderer-type>mp.textrenderer</renderer-type>
        </component>
</facelet-taglib>

但它不起作用。即使我不能使用text.taglib.xml中定义的命名空间。当我错了?

0 个答案:

没有答案