I want to create custom renderer for UIInput component. Et the SourcePackage I created Renderers
package and class Renderers.TextFieldRenderer
, which is following
@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");
}
}
Further i'm created 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>
and 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>
But it doesnt work. Even I'm cant use namespace whuch defined in text.taglib.xml
. When I'm wrong?