700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Spring如何自定义标签

Spring如何自定义标签

时间:2019-07-26 08:45:52

相关推荐

Spring如何自定义标签

定义一个对象,用来存储标签的信息

@Datapublic class Label {private String id;private String name;private double height;private String sex;}

2.定义一个标签解析器继承标签解析器的拓展接口

public class MyLabelBeanDefinitionParser extends AbstractSingleBeanDefinitionParser {@Overrideprotected Class<?> getBeanClass(Element element) {return Label.class;}@Overrideprotected void doParse(Element element, BeanDefinitionBuilder builder) {将标签中所有的属性返回;String name = element.getAttribute("name");String id = element.getAttribute("id");Double height = Double.valueOf(element.getAttribute("height"));String sex = element.getAttribute("sex");if (StringUtils.hasText(name)){builder.addPropertyValue("name",name);}builder.addPropertyValue("id",id);builder.addPropertyValue("height",height);if (StringUtils.hasText(sex)){builder.addPropertyValue("sex",sex);}}}

3. 定义一个命名空间处理器继承命名空间拓展类

public class LabelNameSpaceHandler extends NamespaceHandlerSupport {@Overridepublic void init() {registerBeanDefinitionParser("label",new MyLabelBeanDefiniitionParser());}}

4.定义标签的文件label.xsd放在META-INF目录下

<schema xmlns="/2001/XMLSchema"targetNamespace="/schema/user" ----这个是命名空间的名称 可以是aaa之类的名字elementFormDefault="qualified"><element name="user"> ---标签的名称<complexType><attribute name="id" type="string"/><attribute name="username" type="string"/><attribute name="address" type="string"/><attribute name="age" type="int"/></complexType></element></schema>

5.在META-INF目录下,定义两个文件分别是:spring.handlers和spring.

--在spring.handlershttp\:///schema/label=com.carlos.custom.LabelNameSpaceHandler--在spring.schemashttp\:///schema/label.xsd=META-INF/label.xsd上面的两个都是为了建立映射关系 第一个的key是我们在定义label.xsd的targetNamespace;value就是命名空间处理类的路径;第二个的key是映射我们label.xml里面的内容,value就是实际要去寻找的文件位置;

6.label.xml放在resource目录下

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:mylabel="/schema/label" ----mylable这个可以自定义,"="号后面对应的value就是我们的命名空间;xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd/schema/label ----这里是我们的命名空间,跟上面value保持一致;/schema/label.xsd"> ----这个跟spring.schema来的key保持一致即可;<mylabel:label id="mylabel" name="zhangsan" height="18.8" sex="male"/> ---mylabel跟上面自定义名称保持一致;label就是标签对象的名称;id就是bean的名称,其他的逗哦是给属性赋值</beans>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。