Jsf 为UIInput创建自定义渲染器
我想为UIInput组件创建自定义渲染器。设置我创建的SourcePackageJsf 为UIInput创建自定义渲染器,jsf,custom-component,Jsf,Custom Component,我想为UIInput组件创建自定义渲染器。设置我创建的SourcePackageRenderers包和classRenderers.textfieldrender,如下所示 @FacesRenderer(componentFamily = "javax.faces.UIInput", rendererType = "text") public class TextFieldRender extends Renderer { @Override public void encod
Renderers
包和classRenderers.textfieldrender
,如下所示
@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>
<?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
中定义的名称空间。当我错的时候?你的taglib在哪里?@Templar在WEB-INF目录中。一切都错了,我不知道从哪里开始回答。组件族和渲染器类型未对齐(text
与mp.textdrenderer
不同)。component类引用的是一个标准API类,而不是一个自定义组件类,所以我真的不知道您到底想要实现什么。您确切地说,您希望为UIInput使用自定义呈现程序(因此:对于所有
和
组件…“嗯?”)。你没有展示你实际上打算如何使用它,所以很难理解。你试过看书吗?