最近处理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示例的更多相关文章

  1. JSP第七篇【简单标签、应用、DynamicAttribute接口】

    为什么要用到简单标签? 上一篇博客中我已经讲解了传统标签,想要开发自定义标签,大多数情况下都要重写doStartTag(),doAfterBody()和doEndTag()方法,并且还要知道SKIP_ ...

  2. jsp简单标签开发(一)

    孤傲苍狼 @Override22 public void doTag() throws JspException, IOException {23 //得到代表jsp标签体的JspFragment24 ...

  3. javaweb学习总结(二十六)——jsp简单标签标签库开发(二)

    一.JspFragment类介绍 javax.servlet.jsp.tagext.JspFragment类是在JSP2.0中定义的,它的实例对象代表JSP页面中的一段符合JSP语法规范的JSP片段, ...

  4. javaweb学习总结(二十五)——jsp简单标签开发(一)

    一.简单标签(SimpleTag) 由于传统标签使用三个标签接口来完成不同的功能,显得过于繁琐,不利于标签技术的推广, SUN公司为降低标签技术的学习难度,在JSP 2.0中定义了一个更为简单.便于编 ...

  5. javaweb(二十六)——jsp简单标签标签库开发(二)

    一.JspFragment类介绍 javax.servlet.jsp.tagext.JspFragment类是在JSP2.0中定义的,它的实例对象代表JSP页面中的一段符合JSP语法规范的JSP片段, ...

  6. JSP简单标签开发

    一.继承自SimpleTag接口的自定义标签实现类称为简单标签,接口中5个方法 1.setJspContext方法 用于把JSP页面的PageContext对象传递给标签处理器对象 2.setPare ...

  7. 传智播客JavaWeb day07、day08-自定义标签(传统标签和简单标签)、mvc设计模式、用户注册登录注销

    第七天的课程主要是讲了自定义标签.简单介绍了mvc设计模式.然后做了案例 1. 自定义标签 1.1 为什么要有自定义标签 前面所说的EL.JSTL等技术都是为了提高jsp的可读性.可维护性.方便性而取 ...

  8. javaweb学习总结(二十七)——jsp简单标签开发案例和打包

    一.开发标签库 1.1.开发防盗链标签 1.编写标签处理器类:RefererTag.java 1 package me.gacl.web.simpletag; 2 3 import java.io.I ...

  9. JavaWeb学习记录(十九)——jstl自定义标签之简单标签

    一.简单标签共定义了5个方法: setJspContext方法 setParent和getParent方法 setJspBody方法 doTag方法 二.方法介绍 osetJspContext方法 用 ...

随机推荐

  1. Redis 在NETCore中的应用

    Redis 在NETCore中的应用 Redis 在netFramework中的应用  也一样 新建.NETCORE(webapi)项目 安装NuGet //查询NuGet语句 Find-Packag ...

  2. 吴裕雄--天生自然 JAVASCRIPT开发学习:RegExp 对象

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  3. node.js实现http服务器进行访问

    步骤:一.安装node;二.新建一个文件夹目录(根目录),里面再新建一个server.js文件:三.打开命令行界面,进入文件夹目录然后输入命令node server.js;四.然后就可以在浏览器上通过 ...

  4. 吴裕雄--天生自然 PHP开发学习:数据库 ODBC

    <html> <body> <?php $conn=odbc_connect('northwind','',''); if (!$conn) { exit("连 ...

  5. Android Studio 停靠模式(Docked Mode)

    如果之前选了任务一种模式,先全都取消了 然后点击Window -->Active Tool Window-->这个时候就可以选择Docked Mode了

  6. 内存管理-ARC

    推荐文章:http://blog.csdn.net/primer_programer/article/details/14442899 strong:强指针,指向对象,会持有对象,只有当对象无stro ...

  7. Asp.Net MVC主项目访问不到分离项目控制器的解决方案

    我在portal主项目外新建一个分离项目,控制器和Model都写在分离项目中,视图层写在portal中. 我更改了命名空间,引用了Dll,还是不能访问到控制器. 找到问题: 最后我发现是主项目port ...

  8. pip anaconda 添加国内镜像

    源地址 官方默认镜像太慢.换成国内源比较快.几个源的地址: 清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http://mirrors.aliyun. ...

  9. MySQL——事务(transaction)简单总结

    简介: MySQL事务操作主要用于处理操作量大,复杂度高的数据,比如说,在人员管理系统中要删除一个人员,你既要删除他的基本资料,也要删除该人员的相关信息,如文章.信箱等.这些数据库操作语句就构成了一个 ...

  10. [Shoi2013]超级跳马(DP+矩阵乘法)

    设f[i][j]表示方案数,显然有一个O(m2n)的暴力DP法,但实际上可以按距离当前位置的奇偶性分成s1[i][j]和s2[i][j],然后这个暴力DP可以优化到O(nm)的暴力.于是有这样的递推式 ...