thymeleaf⾃定义标签
thymeleaf⾃定义标签1、 导⼊pom⽂件
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
2、 注⼊Bean
/**
* @author : fzz
*/
@Component
public class DialectConfig {
@Bean
public Dialect getDialect(){
return new Dialect();
}
}thyme
3、 标签添加类
/**
* @author : fzz
*/
public class Dialect extends AbstractProcessorDialect {
private final static String NAME ="tag";
public Dialect(){
super(NAME, null, StandardDialect.PROCESSOR_PRECEDENCE);
}
@Override
public Set<IProcessor>getProcessors(String dialectPrefix){
return createStandardProcessorsSet(dialectPrefix);
}
private Set<IProcessor>createStandardProcessorsSet(String dialectPrefix){
LinkedHashSet<IProcessor> processors =new LinkedHashSet<IProcessor>();
//添加⾃定义标签处理器,可添加多个
processors.add(new ImgLable(dialectPrefix));
return processors;
}
}
4、 ⾃定义标签类
/**
* @author : fzz
*/
public class ImgLable extends AbstractElementTagProcessor {
private static final HashMap<String , String[]> map =new HashMap<>(2);
static{
map.put("icon",new String[]{"-","+",""});
map.put("report",new String[]{"reduce","plus",""});
}
/**
* 这⾥的属性可以根据⾃⼰需要添加
*/
//⾃定义标签名
private static final String TAG_NAME ="imgs";
//⾃定义标签需要处理的属性
private static final String VALUE ="value";
//⾃定义标签需要处理的class
private static final String ClASS ="class";
//⾃定义标签需要处理的属性
private static final String MARK ="mark";
//优先级,thymeleaf内部⽅⾔优先
private static final int PRECEDENCE =70000;
public ImgLable(String dialectPrefix){
super(TemplateMode.HTML, dialectPrefix, TAG_NAME,true, null,false, PRECEDENCE);
}
@Override
//这个⽅法主要实现标签的作⽤,以及⽣成后的标签
protected void doProcess(ITemplateContext context, IProcessableElementTag tag, IElementTagStructureHandler handler){ IAttribute value = Attribute(VALUE);
IAttribute clazz = Attribute(ClASS);
IAttribute key = Attribute(MARK);
int icon =0;
if(!StringUtils.Value().trim())){
icon = Integer.Value());
}
String clas ="";
if(clazz!=null) clas = String.Value());
StringBuffer tagValue =new StringBuffer(" <img ");
// 标签是否存在class
if(!StringUtils.im()))
tagValue.append(" class="+clas);
tagValue.append(" src=\"/static/images/");
// 标签是否是icon
Value().equals("icon"))
tagValue.append("icon_");
char ch =(char)('A'+(icon-1)/3);
tagValue.append(ch);
String[] str = (Value());
tagValue.append(str[icon%3]);
tagValue.append(".png\">");
}
}
5、 html页⾯标签的使⽤
<div><imgs value="1"class=""mark="icon"alt=""title=""></div>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论