简单标签 SimpleTagSupport示例
最近处理JSP页面,需要把数据库查到的原始值,根据数据字典转换成更加直观的值。比如查到的结果是 01,jsp页面展示‘身份证’。
如果值比较少,就直接用c:if标签处理了,无奈接触的值比较多,只想到了自定义标签来处理,如果哪个大神有更好的办法,请赐教。
新建class,继承SimpleTagSupport类,实现doTag方法。
package com.jeecg.tool.variable; import java.io.IOException;
import java.io.StringWriter;
import java.util.List;
import java.util.Map; import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.JspFragment;
import javax.servlet.jsp.tagext.SimpleTagSupport; import org.jeecgframework.core.util.ApplicationContextUtil;
import org.jeecgframework.web.system.service.SystemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; @Component
public class HdDicTag extends SimpleTagSupport { private String dictionary; @Autowired
private static SystemService systemService; /**
* @Title: getDictionary <BR>
* @Description: please write your description <BR>
* @return: String <BR>
*/
public String getDictionary() {
return dictionary;
} /**
* @Title: setDictionary <BR>
* @Description: please write your description <BR>
* @return: String <BR>
*/
public void setDictionary(String dictionary) {
this.dictionary = dictionary;
} @Override
public void doTag() throws JspException, IOException {
StringWriter writer = new StringWriter();
JspFragment jspBody = this.getJspBody();
jspBody.invoke(writer);
String content = writer.toString(); systemService = ApplicationContextUtil.getContext().getBean(SystemService.class);
String sql = "SELECT\r\n" + " TYPENAME \r\n" + "FROM\r\n" + " \"T_S_TYPE\" \r\n" + "WHERE\r\n"
+ " TYPECODE = '" + content + "' AND TYPEGROUPID IN (\r\n" + "SELECT\r\n" + " id \r\n"
+ "FROM\r\n" + " T_S_TYPEGROUP g \r\n" + "WHERE\r\n" + " g.TYPEGROUPCODE = '" + dictionary + "')";
List<Map<String, Object>> list = systemService.findForJdbc(sql);
System.out.println(sql);
String typename = "";
if (list.size() > 1) {
this.getJspContext().getOut().write("数据字典获取异常,不唯一");
return;
} else if (list.size() < 1) {
this.getJspContext().getOut().write("");
} else {
typename = (String) list.get(0).get("TYPENAME");
this.getJspContext().getOut().write(typename);
}
} }
WEB-INF下新建tld文件。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.0</jsp-version>
<short-name>t</short-name>
<uri>hdDic-tags</uri>
<display-name>"自定义标签"</display-name> <tag>
<name>HdDicTag</name>
<tag-class>com.jeecg.tool.variable.HdDicTag</tag-class>
<body-content>JSP</body-content>
<description>列表字段</description>
<body-content>scriptless</body-content><!--这里要用这个处理-->
<attribute>
<name>dictionary</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
<description>数据字典组编码 或 自定义字典</description>
</attribute>
</tag> </taglib>
然后在页面引入、使用。
<%@ taglib prefix="hd" uri="hdDic-tags"%>
<hd:HdDicTag dictionary="cardType">${hdBhApplyPage.idCardCategory}</hd:HdDicTag>
简单标签 SimpleTagSupport示例的更多相关文章
- JSP第七篇【简单标签、应用、DynamicAttribute接口】
为什么要用到简单标签? 上一篇博客中我已经讲解了传统标签,想要开发自定义标签,大多数情况下都要重写doStartTag(),doAfterBody()和doEndTag()方法,并且还要知道SKIP_ ...
- jsp简单标签开发(一)
孤傲苍狼 @Override22 public void doTag() throws JspException, IOException {23 //得到代表jsp标签体的JspFragment24 ...
- javaweb学习总结(二十六)——jsp简单标签标签库开发(二)
一.JspFragment类介绍 javax.servlet.jsp.tagext.JspFragment类是在JSP2.0中定义的,它的实例对象代表JSP页面中的一段符合JSP语法规范的JSP片段, ...
- javaweb学习总结(二十五)——jsp简单标签开发(一)
一.简单标签(SimpleTag) 由于传统标签使用三个标签接口来完成不同的功能,显得过于繁琐,不利于标签技术的推广, SUN公司为降低标签技术的学习难度,在JSP 2.0中定义了一个更为简单.便于编 ...
- javaweb(二十六)——jsp简单标签标签库开发(二)
一.JspFragment类介绍 javax.servlet.jsp.tagext.JspFragment类是在JSP2.0中定义的,它的实例对象代表JSP页面中的一段符合JSP语法规范的JSP片段, ...
- JSP简单标签开发
一.继承自SimpleTag接口的自定义标签实现类称为简单标签,接口中5个方法 1.setJspContext方法 用于把JSP页面的PageContext对象传递给标签处理器对象 2.setPare ...
- 传智播客JavaWeb day07、day08-自定义标签(传统标签和简单标签)、mvc设计模式、用户注册登录注销
第七天的课程主要是讲了自定义标签.简单介绍了mvc设计模式.然后做了案例 1. 自定义标签 1.1 为什么要有自定义标签 前面所说的EL.JSTL等技术都是为了提高jsp的可读性.可维护性.方便性而取 ...
- javaweb学习总结(二十七)——jsp简单标签开发案例和打包
一.开发标签库 1.1.开发防盗链标签 1.编写标签处理器类:RefererTag.java 1 package me.gacl.web.simpletag; 2 3 import java.io.I ...
- JavaWeb学习记录(十九)——jstl自定义标签之简单标签
一.简单标签共定义了5个方法: setJspContext方法 setParent和getParent方法 setJspBody方法 doTag方法 二.方法介绍 osetJspContext方法 用 ...
随机推荐
- JavaScript之基于原型链的继承
本文介绍下js的OOP中的继承. 上图的要点为:Foo函数在创建时会自动生成内置属性prototype,而typeof Foo.prototype是object类型的. 上图的要点为:Foo.prot ...
- Unity获取游戏对象详解
我觉得Unity里面的Transform 和 GameObject就像两个双胞胎兄弟一样,这俩哥们很要好,我能直接找到你,你也能直接找到我.我看很多人喜欢在类里面去保存GameObject对象.解决G ...
- 题解 P1403 【[AHOI2005]约数研究】
题目 看到题解区很多人直接给出结论:答案为 \(\displaystyle \sum_{i=1}^n\lfloor{n\over i}\rfloor\) ,没给出证明,这里给出证明 [分析] 首先,我 ...
- 寒假day13
今天看了计算机网络的相关面试题
- EditText制作简单的登录界面
EditText与之前的TextView和Button的用法大体相同,用法案例如下: activity_edit_text.xml: <?xml version="1.0" ...
- SpringBoot+SpringSecurity+jwt整合及初体验
原来一直使用shiro做安全框架,配置起来相当方便,正好有机会接触下SpringSecurity,学习下这个.顺道结合下jwt,把安全信息管理的问题扔给客户端, 准备 首先用的是SpringBoot, ...
- linux的centos设置静态网络
这个是该自己的网络排至,具体的分析,自己以后再研究 http://www.centoscn.com/CentOS/config/2015/0227/4753.html
- 17.3.12--uillib模块
1---uillib是python标准库中最常用的一个python网络应用资源访问的模块,他可以让你像访问文本一样,读取网页的内容 它的作用是访问一些不需要验证的网络资源和cookie等 uillib ...
- 吴裕雄--天生自然ShellX学习笔记:Shell 函数
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用. shell中函数的定义格式如下: [ function ] funname [()] { action; [return ...
- 吴裕雄--天生自然 JAVA开发学习:运算符
public class Test { public static void main(String[] args) { int a = 10; int b = 20; int c = 25; int ...