首页 > 其他分享 >1 Spring5 自定义标签开发

1 Spring5 自定义标签开发

时间:2024-02-21 22:14:45浏览次数:36  
标签:userName String 自定义 标签 email id password public Spring5

spring5 自定义脚本开发步骤

1 定义bean,

public class User {
 
    private String id;
 
    private String userName;
 
    private String email;
 
    private String password;
 
 
    public String getId() {
        return id;
    }
 
    public void setId(String id) {
        this.id = id;
    }
 
    public String getUserName() {
        return userName;
    }
 
    public void setUserName(String userName) {
        this.userName = userName;
    }
 
    public String getEmail() {
        return email;
    }
 
    public void setEmail(String email) {
        this.email = email;
    }
 
    public String getPassword() {
        return password;
    }
 
    public void setPassword(String password) {
        this.password = password;
    }
}

  

2 自定义 BeanDefinitionParser,继承  AbstractSingleBeanDefinitionParser

import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
import org.springframework.util.StringUtils;
import org.w3c.dom.Element;
 
public class UserBeanDefinitionParser extends AbstractSingleBeanDefinitionParser {
 
    protected Class<?> getBeanClass(Element element){
        return User.class;
    }
 
    protected void doParse(Element element, BeanDefinitionBuilder builder){
        String userName = element.getAttribute("userName");
        String email = element.getAttribute("email");
        String password = element.getAttribute("password");
        String id = element.getAttribute("id");
 
 
        if (StringUtils.hasText(userName)){
            builder.addPropertyValue("userName", userName);
        }
 
        if (StringUtils.hasText(email)){
            builder.addPropertyValue("email", email);
 
        }
 
        if (StringUtils.hasText(password)){
            builder.addPropertyValue("password", password);
        }
 
        if (StringUtils.hasText(id)){
            builder.addPropertyValue("id", id);
        }
    }
}

  

3 定义 NameSpaceHandler, 继承 NamespaceHandlerSupport,

import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
 
public class UserNameSpaceHandler extends NamespaceHandlerSupport {
    @Override
    public void init() {
        registerBeanDefinitionParser("user", new UserBeanDefinitionParser());
    }
}

  

4 自定义配置文件,在resource/META-INF 目录下,新建spring.handlers , spring.schemas , user.xsd 文件。

 

spring.handlers 文件内容如下:

http\://www.gientech.com/schema/user=com.gientech.selftag.UserNameSpaceHandler

  

spring.schemas 文件内容如下:

http\://www.gientech.com/schema/user.xsd=META-INF/user.xsd

spring.xsd 文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
        targetNamespace="http://www.gientech.com/schema/user"
        xmlns:tns="http://www.gientech.com/schema/user"
        elementFormDefault="qualified">
 
    <element name="user">
        <complexType>
            <attribute name="id" type="string"></attribute>
            <attribute name="userName" type="string"></attribute>
            <attribute name="email" type="string"></attribute>
            <attribute name="password" type="string"></attribute>
        </complexType>
    </element>
</schema>

  

5 spring-content.xml 引入命名空间,使用新标签配置bean

 

 

6 启动Spring 项目, 获取bean的值,

 

7 打印结果如下:

 

自定义标签开发完成,按照步骤可正确开发自定义标签。

 

标签:userName,String,自定义,标签,email,id,password,public,Spring5
From: https://www.cnblogs.com/zgcy123456/p/18025463

相关文章

  • 一文了解广州自定义表单开源的诸多优势特点
    广州自定义表单开源可以助力企业实现提质增效、降低人工成本的发展目的,因而在通信业、电力、高校、制造业、医疗等很多行业中获得了大家的点赞与支持。广州流辰信息是一家专业性强的低代码技术平台服务商,潜心研发广州自定义表单开源工具,与客户朋友一起创造更具价值的辉煌前程。那......
  • 自定义异常处理
    系统自定义异常处理@RestControllerAdvicepublicclassExceptionAdvice{@ExceptionHandler(ArithmeticException.class)@ResponseBodypublicResponseResultariHandleException(){ResponseResultresponseResult=newResponseResult();......
  • selenium搜索标签,获取标签属性
    搜索标签1By.ID#根据id号查找标签bro.find_element(By.ID,'id内容')2By.NAME#根据name属性查找标签3By.TAG_NAME#根据标签名查找标签a_list=bro.find_elements(By.TAG_NAME,'a')4By.CLASS_NAME#按类名找dig=bro.find_element(By.CLASS_NAME,'diggit')......
  • 华为二面:SpringBoot如何自定义Starter?
    SpringBoot的自动配置机制为开发人员提供了一种轻松集成和配置各种功能的便捷方式。然而,随着项目的复杂性增加,更好地组织和分享通用功能变得至关重要。自定义Starter成为了理想的解决方案,旨在简化项目的依赖管理和自动配置,使开发者能够迅速而灵活地集成特定的功能模块。本文将深......
  • 自定义表单工作流的优势特点有啥?
    低代码技术平台是提升办公效率的得力武器,在当今竞争激烈的社会中获得了很多中小企业的喜爱与支持。流辰信息是一家专业研发低代码技术平台的服务商,IBPS开发平台用于很多行业中,助力企业实现了办公流程化。自定义表单工作流的优势多、简单灵活好操作,是做好数字化转型的有力助手。低......
  • go自定义了一个Code的错误代码类型
    第一次基于GoFrame框架开发项目,这是一个灵感来自PHPLaravel的Golang开发框架,使用之后其实自己并不是很喜欢,把一个开发语言的习惯直接迁移到另一个开发语言上,个人觉得并不是一个好主意,不过这次并不想讨论这个。同事之前的实践异常处理是每个框架都需要考虑的问题,GoFrame也有自己......
  • collection标签多条件查询
    场景:要查的数据在两个表,并且这个两个表为一对多关系。eg:以上为我最终要得到的数据实体,现在要开始查这些数据思路:先查【一对多】中的【一】这张表基本信息,其次查【多】中你要进行多条件筛选的这些条件字段代码:1、查基本信息<selectid="selectByDeviceCode"resultMap="map">......
  • RK3568驱动指南|驱动基础进阶篇-进阶5 自定义实现insmod命令实验
    瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和MaliG522EE图形处理器。RK3568支持4K解码和1080P编码,支持SATA/PCIE/USB3.0外围接口。RK3568内置独立NPU,可用于轻量级人工智能应用。RK3568支持安卓11和linux系统,主要面向......
  • 修改标签官网自带css——dialog
    对于标签原本自带的class类就如下图的.el-dialog__body就是自带的原dialog:现在若要更改padding值方式一(但是修改的是全局的了):<style>.el-dialog__body{padding:15px;}</style>方式二(给dialog加一个自定义类名,修改的是所有class匹配的el-dia......
  • Type information 反射信息 Type指一个对象的种类,某种自定义的class,某个interface或st
    Typeinformation反射信息Type指一个对象的种类,某种自定义的class,某个interface或string等,都是type的一种。 (本文参考了Thinkinginjava中的typeinformation这章)什么是TypeinformationType指一个对象的种类,某种自定义的class,某个interface或string等,都是type的一......