自定义标签都是背后有一个TLD文件作为支撑,每个TLD文件之后就是一个实际的JAVA类
比如我们根据标签名直接找到Xxx.tld文件
<tag> <name>dict</name> <tag-class>com.common.tags.DictTag</tag-class> <body-content>empty</body-content> <info>字典项标签</info> <attribute> <name>dictType</name> <required>true</required> <rtexprvalue>true</rtexprvalue> <description>字典类型名称</description> </attribute> <attribute> <name>name</name> <required>false</required> <rtexprvalue>true</rtexprvalue> <description>表单元素名称</description> </attribute> <attribute> <name>type</name> <required>false</required> <rtexprvalue>true</rtexprvalue> <description>表单元素类型:目前支持(select、checkbox、radio)默认select</description> </attribute> <attribute> <name>value</name> <required>false</required> <rtexprvalue>true</rtexprvalue> <description>表单元素默认值,多值逗号隔开</description> </attribute> <attribute> <name>className</name> <required>false</required> <rtexprvalue>true</rtexprvalue> <description>表单元素class</description> </attribute> <attribute> <name>width</name> <required>false</required> <rtexprvalue>true</rtexprvalue> <description>表单元素宽度</description> </attribute> <attribute> <name>needDefault</name> <required>false</required> <rtexprvalue>true</rtexprvalue> <description>是否需要默认值,@true-需要,false-不需要,默认true</description> </attribute> <attribute> <name>other</name> <required>false</required> <rtexprvalue>true</rtexprvalue> <description>其他非常用属性</description> </attribute> </tag> 很明显这个TLD文件的支撑类就是 com.common.tags.DictTag找到这个类的doTag() @Override public void doTag() throws JspException, IOException { PageContext context = (PageContext) getJspContext(); Writer out = context.getOut(); //参数封装 Map<String ,Object> params = new HashMap<String , Object>(); params.put("name", name); params.put("dataList", getDictList(dictType)); params.put("type", type.toLowerCase()); params.put("value", value); params.put("width", width); params.put("className", className); params.put("needDefault", needDefault); params.put("other", other); //根据表单元素生成器,生成html String html = FormEleUtils.getFormEleHtml(params); out.write(html); } 这个就是直接写出HTML的一个方法那么这个报错信息就很简单了 就是这个标签类中没有定义一个属性 叫做ID 去除就可以了
ERROR
<td> <mt:dict type="select" name='target' id="target" dictType="sys_area_type" width="333" value="${treeDemo.target }"/> </td> right <td> <mt:dict type="select" name="open" dictType="sys_area_type" /> </td>