- 浏览: 1985747 次
- 性别:
- 来自: 哈尔滨
文章分类
- 全部博客 (188)
- java基础 (22)
- 经验+注意 (39)
- Oracle (34)
- javaScript (28)
- jquery (24)
- iBatIS (11)
- hibernate (8)
- struts1.x (1)
- spring (1)
- SVN (1)
- myeclipse (12)
- jbmp工作流 (1)
- 其他 (22)
- 杂谈 (4)
- struts2 (5)
- css (4)
- 正则表达式 (2)
- jstl标签 (4)
- Java Tree (2)
- Jboss (1)
- json (1)
- HttpURLConnection (1)
- Apache commons工具包 (1)
- groovy+grails (2)
最新评论
-
q2425533:
Java字符串倒序输出 + 数组的排序 -
变脸小伙:
今天也跟着学习了,用到了
struts2拦截器 获得请求方法名+获得请求参数 -
tuspark:
讲解的很不错。URLConnection类的内容也可以看这篇文 ...
HttpURLConnection详解 -
wolf746773350:
...
window.location.href/replace/reload()--页面跳转+替换+刷新 -
wolf746773350:
[/flash]
window.location.href/replace/reload()--页面跳转+替换+刷新
又用到java自定义标签,我比较不喜欢用它,没上心看,但是还得用啊!
1.先上我的代码,使用java自定义标签
1.1PSCheckboxTag.tag
<%@ tag pageEncoding="UTF-8" import="java.util.*,com.hanpeng.base.util.SelectManager,com.hanpeng.base.util.SelectManagerRequest" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ attribute name="id" required="true" rtexprvalue="true"%> <%@ attribute name="name" required="true" rtexprvalue="true"%> <%@ attribute name="mainid" required="true" rtexprvalue="true"%> <%@ attribute name="required" required="false" rtexprvalue="true" type="java.lang.Boolean"%> <%@ attribute name="isSelect" required="false" rtexprvalue="true" type="java.lang.String[]"%> <!-- --> <%@ attribute name="isShowHead" required="false" rtexprvalue="true" type="java.lang.Boolean"%> <!-- 是否显示请选择 --> <%@ attribute name="headinfo" required="false" rtexprvalue="true" %> <!-- 自定义下拉框默认显示 --> <%@ attribute name="sendMethod" required="false" rtexprvalue="true" %> <!-- 调用参数 --> <%@ attribute name="disabledstate" required="false" rtexprvalue="true" %> <!-- 可传任意值 如:disabled=true --> <%@ attribute name="widlength" required="false" rtexprvalue="true" %> <!-- 设置宽度 --> <%@ attribute name="diyClass" required="false" rtexprvalue="true" %> <!-- 自定义样式 --> <%@ attribute name="sendShowTitle" required="false" rtexprvalue="true" %> <!-- 传入标题名称 --> <%@ attribute name="sendOnChangeJs" required="false" rtexprvalue="true" %> <!-- 指定方法JS --> <% java.util.List list = null; if(sendMethod != null){ if("zaiXinZhiFuXinXi".equals(sendMethod)) list = SelectManager.zaiXinZhiFuXinXi(); /* 在线支付渠道 */ if("cunKuanYinHang".equals(sendMethod)) list = SelectManagerRequest.getCunKuanYinHang(request); /* 在线支付渠道 */ if("getThreeMonthBefore".equals(sendMethod)) list = SelectManager.getThreeMonthBefore(); /* 本月前三月 */ if("getMoneyType".equals(sendMethod)) list = SelectManager.getMoneyType(); /* 面值类型 */ } %> <input type="checkbox" id="<%=mainid %>" name="<%=mainid %>" class="<%=diyClass %>" onclick="<%=sendOnChangeJs %>"/> <%=sendShowTitle%> <% if(list != null){ for (int i=0;i<list.size();i++ ){ java.util.HashMap ot = (java.util.HashMap)list.get(i); String oti = ot.get("val").toString(); if(isSelect != null){ %> <input type="checkbox" id="<%=id %>" name="<%=name %>" value="<%=ot.get("val")%>" <% for(int j=0;j<isSelect.length;j++){ String tid = isSelect[j]; if(tid.equals(oti)){ %> checked="checked" <% } } %> onClick="doRemovethis()"/> <%=ot.get("key") %> <% }else{ %> <input type="checkbox" id="<%=id %>" name="<%=name %>" value="<%=ot.get("val")%>" onClick="doRemovethis()"/> <%=ot.get("key") %> <% } } } %> <script> /* 全选/反选 */ function doSelectAll(val){ var checkThis = document.getElementById('<%=mainid %>').checked; var checkList = document.getElementsByName('<%=id %>'); if(checkThis == false){ for(var i=0;i<checkList.length;i++){ checkList[i].checked = false; } }else if(checkThis == true){ for(var i=0;i<checkList.length;i++){ checkList[i].checked = true; } } } /* 去掉全选 */ function doRemovethis(){ document.getElementById('<%=mainid %>').checked = false; } </script>
1.2 showPriceStrategy.jsp中引用
<%@ taglib prefix="spes" tagdir="/WEB-INF/tags" %> <tr> <td align="right"> 面值: </td> <td> <div id="divMoney"> <spes:PSCheckboxTag id="money" name="money" mainid="moneyAll" diyClass="sel" isShowHead="false" sendMethod="getMoneyType" sendShowTitle="全部" sendOnChangeJs="doSelectAll(this.value)" isSelect="<%=request.getParameterValues("money") %>" /> </div> </td> <td><span id="textMoney"> </span></td> </tr>
1.3 SelectManager.java工具类中代码
//------------------------------------------------------------------------------ //文 件 名: 版 本: //描 述: //版权所有:杭州瀚鹏科技有限公司 //------------------------------------------------------------------------------ //创 建 者:sgdjava 创建日期:2011-6-15 //修 改 者: 修改日期: //修改说明: //------------------------------------------------------------------------------ package com.hanpeng.base.util; import java.util.ArrayList; import java.util.Calendar; import java.util.HashMap; import java.util.List; import java.util.Map; import com.hanpeng.base.util.memoryCtrl.DictionaryCtrl; /** * @author sgdjava * @date 2011-6-15 上午10:06:44 * */ @SuppressWarnings("unchecked") public class SelectManager { /**月份中文名*/ private final static String[] MONTHC = { "一月","二月","三月", "四月","五月","六月", "七月","八月","九月", "十月","十一月","十二月", }; /** * 在线支付信息 k=状态名称,v=0/2; t=t_dictionary */ public static List zaiXinZhiFuXinXi(){ String[] sval = "65,66".split(",");// value String[] skey = (DictionaryCtrl.getServiceName("65") +","+DictionaryCtrl.getServiceName("66")).split(",");// key return allList(sval,skey); } /** * 银行对帐,匹配状态 k=状态名称,v=0/2; t=t_dictionary */ public static List yinHangPiPeiZT(){ String[] sval = "0,2".split(",");// value String[] skey = (DictionaryCtrl.getServiceName("0") +","+DictionaryCtrl.getServiceName("2")).split(",");// key return allList(sval,skey); } /** * 处理状态,未处理,处理成功 */ public static List chulizhuangtai(){ String[] sval = "0,2".split(",");// value String[] skey = ("处理成功,未处理").split(",");// key return allList(sval,skey); } /** * 自动续期 k=状态名称,v=10/11;t=t_dictionary */ public static List ziDongXvQi(){ String[] sval = "10,11".split(",");// value String[] skey = (DictionaryCtrl.getServiceName("10") +","+DictionaryCtrl.getServiceName("11")).split(",");// key return allList(sval,skey); } /** * 套餐记录类型 k=类型名称,v=155~159;t=t_dictionary */ public static List taoCanJiLuLeiXing(){ String[] sval = "155,156,157,158,159".split(",");// value String[] skey = (DictionaryCtrl.getServiceName("155") +","+DictionaryCtrl.getServiceName("156") +","+DictionaryCtrl.getServiceName("157") +","+DictionaryCtrl.getServiceName("158") +","+DictionaryCtrl.getServiceName("159")).split(",");// key return allList(sval,skey); } /** * 读取状态 k=状态名称,v=16/17;t=t_dictionary */ public static List duQvZhuangTai(){ String[] sval = "16,17".split(",");// value String[] skey = (DictionaryCtrl.getServiceName("16") +","+DictionaryCtrl.getServiceName("17")).split(",");// key return allList(sval,skey); } /** * 公告类型 k=类型名称,v=20~24;t=t_dictionary */ public static List gongGaoLeiXing(){ String[] sval = "20,21,22,23,24".split(",");// value String[] skey = (DictionaryCtrl.getServiceName("20") +","+DictionaryCtrl.getServiceName("21") +","+DictionaryCtrl.getServiceName("22") +","+DictionaryCtrl.getServiceName("23") +","+DictionaryCtrl.getServiceName("24")).split(",");// key return allList(sval,skey); } /** * 公告展示 k=展示类型,v=26~28;t=t_dictionary */ public static List gongGaoZhanShi(){ String[] sval = "26,27,28".split(",");// value String[] skey = (DictionaryCtrl.getServiceName("26") +","+DictionaryCtrl.getServiceName("27") +","+DictionaryCtrl.getServiceName("28")).split(",");// key return allList(sval,skey); } /** * 记录类型 k=类型名称,v=9/30/31/34/35/33/82/97/98/99 */ public static List jiLuLeiXing(){ String[] sval = "9,30,31,32,33,82,97,98,99,154".split(",");// value String[] skey = (DictionaryCtrl.getServiceName("9") +";"+DictionaryCtrl.getServiceName("30") +";"+DictionaryCtrl.getServiceName("31") +";"+DictionaryCtrl.getServiceName("32") +";"+DictionaryCtrl.getServiceName("33") +";"+DictionaryCtrl.getServiceName("82") +";"+DictionaryCtrl.getServiceName("97") +";"+DictionaryCtrl.getServiceName("98") +";"+DictionaryCtrl.getServiceName("99") +";"+DictionaryCtrl.getServiceName("154")).split(";");// key return allList(sval,skey); } /** * 运营商 k=运营商,v=40/41/42;t=t_dictionary */ public static List yunYingShang(){ String[] sval = "40,41,42".split(",");// value String[] skey = (DictionaryCtrl.getServiceName("40") +","+DictionaryCtrl.getServiceName("41") +","+DictionaryCtrl.getServiceName("42")).split(",");// key return allList(sval,skey); } /** * 号码类型 k=类型名称,v=45/56/57;t=t_dictionary */ public static List haoMaLeiXing(){ String[] sval = "45,46".split(",");// value String[] skey = (DictionaryCtrl.getServiceName("45") +","+DictionaryCtrl.getServiceName("46")).split(",");// key return allList(sval,skey); } /** * 冲正状态 k=状态名称,v=83/84/3/-1;t=t_dictionary */ public static List chongZhengZhangTai(){ String[] sval = "83,84,3,-1".split(",");// value String[] skey = (DictionaryCtrl.getServiceName("83") +","+DictionaryCtrl.getServiceName("84") +","+DictionaryCtrl.getServiceName("3") +","+DictionaryCtrl.getServiceName("-1")).split(",");// key return allList(sval,skey); } /** * 单边状态 k=状态名称,v=95/96/111/-111;t=t_dictionary */ public static List danBianZhuangTai(){ String[] sval = "95,111,-111".split(",");// value String[] skey = (DictionaryCtrl.getServiceName("95") +","+DictionaryCtrl.getServiceName("111") +","+DictionaryCtrl.getServiceName("-111")).split(",");// key return allList(sval,skey); } /** * 业务状态(后) k=状态名称,v=0/1/2/-1/-2/-7;t=t_dictionary */ public static List yeWuZhuangTai(){ String[] sval = "0,1,2,-1,-2,-7".split(",");// value String[] skey = (DictionaryCtrl.getServiceName("0") +","+DictionaryCtrl.getServiceName("1") +","+DictionaryCtrl.getServiceName("2") +","+DictionaryCtrl.getServiceName("-1") +","+DictionaryCtrl.getServiceName("-2") +","+DictionaryCtrl.getServiceName("-7")).split(",");// key return allList(sval,skey); } /** * 短信类型 k=类型名称,v=165~167,t=t_dictionary */ public static List duanXinLeiXing(){ String[] sval = "165,166,167".split(",");// value String[] skey = (DictionaryCtrl.getServiceName("165") +","+DictionaryCtrl.getServiceName("166") +","+DictionaryCtrl.getServiceName("167")).split(",");// key return allList(sval,skey); } /** * 开关状态 k=字典表,v=10/11;t=t_dictionary */ public static List kaiGuanZhuangTai(){ String[] sval = "10,11".split(",");// value String[] skey = (DictionaryCtrl.getServiceName("10") +","+DictionaryCtrl.getServiceName("11")).split(",");// key return allList(sval,skey); } /** * 获取本月之前三月 * @return * @author Invalid * @date 2011-6-24 下午05:13:40 */ public static List getThreeMonthBefore(){ Calendar date = Calendar.getInstance(); int[] months = new int[3]; int[] years = new int[3]; for(int i=0; i < months.length;i++){ date.add(Calendar.MONTH, -1); months[i] = date.get(Calendar.MONTH)+1; years[i] = date.get(Calendar.YEAR); } String[] sval = { years[0]+"-"+(months[0] < 10 ? "0"+months[0] : months[0]), years[1]+"-"+(months[1] < 10 ? "0"+months[1] : months[1]), years[2]+"-"+(months[2] < 10 ? "0"+months[2] : months[2]) };// value String[] skey = {MONTHC[months[0]-1],MONTHC[months[1]-1],MONTHC[months[2]-1]};// key return allList(sval,skey); } /** * 面值类型 k=面值数值1~1000,v=1~1000 */ public static List getMoneyType(){ String[] moneyVal = "1,3,5,10,20,30,50,100,200,300,500,1000".split(",");// value String[] moneyKey = "1,3,5,10,20,30,50,100,200,300,500,1000".split(",");//key return allList(moneyVal,moneyKey); } /** * 公用方法,返回下拉列表框结果 * @param sval * @param skey * @return * @author sgdjava * @date 2011-6-15 上午10:26:12 */ public static List allList(String[] sval,String[] skey){ List result = new ArrayList(); for (int i = 0; i < sval.length; i++) { Map map = new HashMap(); map.put("val", sval[i]); map.put("key", skey[i]); result.add(map); } return result; } }
--------------------------------------------------------------------------------------------------------------------------------------------------
2.详细使用方法
--------------------------------------------------------------------------------------------------------------------------------------------------
3.自定义标签两个属性,需要注意
<required>yes</required><!-- 表示该属性,一定要使用 -->
<rtexprvalue>true</rtexprvalue><!-- 属性是否能用表达式 --> 即EL表达式是否可用
当在<attribute>标签里指定<rtexprvalue>true</rtexprvalue>时, 表示该自定义标签的某属性的值可以直接指定或者通过动态计算指定, example as follow:
<sql:query var="result" >
select * from mytable order by nameid
</sql:query>
<%request.setAttribute("nameid", "2"); %>
<myTag:cupSize cupSize="1" cupSizes="${result}"></myTag:cupSize>
<myTag:cupSize cupSize="${nameid}" cupSizes="${result}"></myTag:cupSize>
当在<attribute>标签里指定<rtexprvalue>false</rtexprvalue>时, 表示该自定义标签的某属性的值只能直接指定, example as follow:
<myTag:cupSize cupSize="1" cupSizes="${result}"></myTag:cupSize>
-----------------------------------------------------------------------------------------------------------------------------------------------------------
发表评论
-
java获得系统盘符(Windows、linux自动切换)
2017-12-22 16:08 2421做文件读写时,本机开发是windows系统,但服务器是li ... -
java switch的使用+switch用String作为条件
2012-03-23 16:58 67389一、java switch的基本使用: /* int参数的s ... -
java的Map循环
2012-03-23 11:18 1621import java.util.ArrayList; im ... -
Java字符串倒序输出 + 数组的排序
2012-03-08 18:06 9344一、Java字符串倒序输出 方法一:利用 ... -
java replaceall()和replace()
2012-01-16 15:22 3601####我的应用 String path=& ... -
Random()随机数+随机切换图片
2011-12-13 14:55 3167一、Random()随机数 转自:http://bl ... -
Request对象各种获得路径的方法+Request对象各种方法(.getRemoteAddr)
2011-12-13 14:43 9702用jboss发布的工程,测试request对象返回路径的方法, ... -
JavaBean命名规范,不能以一个字母开头bPrivNum,可以bussPrivNum
2011-09-30 13:54 2943今天做项目时候遇到个JavaBean的set()、get()方 ... -
计算机精度问题(Double)
2011-07-30 18:02 2260计算机精度问题(Double) 1.1.我们用计算器1 ... -
java代码段+jsp的基础应用
2011-07-29 16:10 1601项目需要大量使用自定义标签,讨厌的<%%>和< ... -
Java的split()函数
2011-07-19 16:04 4666今天用到String的split()函数,调试半天不好使! ... -
HttpURLConnection详解
2011-07-18 13:08 7652项目中用到HttpURLConnection,远程连接客户端, ... -
java中Thread.sleep()
2011-07-18 11:32 4879今天看到一篇文章,是说java的 Thread.sleep() ... -
java--自定义标签(tag、tld两种)
2011-07-16 17:24 163341.一篇不错的 java自定义标签的文章地址:http:/ ... -
String.format函数使用方法介绍
2011-06-29 17:43 1557今天看到一篇String.format文章,写的细致,复习了! ... -
java取消科学计数法
2011-06-29 17:34 19536前台输入手机号13777777777,如果是为Double类型 ... -
java.util.Date和java.sql.Date的区别及应用
2011-06-29 17:16 1783java.util.Date和java.sql.Date ... -
DecimalFormat数字格式化
2011-06-23 14:54 1555java类,可能需要用到数字格式化 DecimalFo ... -
Java中Set巧用,去掉重复数据
2011-06-22 16:56 39858java中Set有这样一个方法,.addAll( Collec ... -
java泛型_实用
2011-05-17 10:59 1354看了一篇很实用的java泛 ...
相关推荐
- 在JSP页面中通过`<%@ taglib %>`指令引入标签库,并使用自定义标签。 5. **淘宝购物分页样式**: - 淘宝分页标签通常具有简洁、直观的特点,可能包括了当前页数、总页数、跳转框、左右箭头等元素。 - 可以模仿...
极光推送是面向移动应用开发者提供的一套消息推送服务,它可以帮助开发者轻松实现向Android、iOS以及Web端用户推送自定义消息或通知。在Java服务端集成这个SDK,可以方便地在服务器端调用极光推送的相关API,实现与...
极光推送(JPush)是基于Java开发的一款高效、稳定的推送服务工具,广泛应用于移动应用开发者,以实现向Android和iOS设备实时推送消息。`jpush-api-java-client-3.3.3.zip`是一个包含极光推送Java客户端库的压缩包,...
本压缩包“jpush-api-java-client-master.zip”包含了极光推送的Java SDK,为开发者提供了方便的API接口,使得应用能够实现消息推送、用户标签管理、设备统计等功能。以下是对这个SDK及其相关知识点的详细解释: 1....
要将FCKeditor集成到Java应用中,你需要了解如何在Servlet或JSP中嵌入编辑器,配置相应的路径,处理上传的文件,以及在服务器端接收和返回编辑内容。这通常涉及设置JavaScript变量,配置URL映射,以及处理HTTP请求...
- 可以自定义标签的字体、颜色和位置。 - **添加栅格数据:** - 加载和显示栅格数据,如卫星图像或航空照片。 - 支持多种格式,如 TIFF、JPEG、PNG 等。 - **显示 KML 内容:** - 导入和显示 KML 文件中的地理...
在Java应用程序中,我们经常需要通过命令行参数来调整Java虚拟机(JVM)的行为,例如内存分配、垃圾回收策略等。在Azkaban中,我们可以通过配置Azkaban作业的属性来指定这些参数。例如,可以使用`-D`选项设置系统...
使用这个SDK,开发者可以方便地在自己的Java应用程序中集成推送功能,无需关心底层通信细节。SDK提供了创建、管理推送任务,以及接收和处理推送反馈等能力。通过调用SDK中的方法,你可以设置推送目标(如指定设备、...
6. **异常处理**:高级的异常处理策略,如链式异常、自定义异常和finally块的合理使用。 7. **设计模式**:可能涵盖单例、工厂、观察者、装饰器、适配器等多种设计模式的实现。 8. **网络编程**:TCP/UDP套接字...
Java自定义注解是Java平台提供的一种元编程机制,它允许程序员在源代码中的任何元素(类、方法、变量等)上添加元数据。自定义注解可以被编译器或者运行时系统用来执行特定的任务,例如代码分析、性能监控、持久化...
标签中的"intellij-idea"和"java"明确了插件的应用平台和语言,而"jar"则表明了其以Java Archive (JAR) 文件的形式发布,这是Java平台上常见的可执行文件格式,方便在不同环境中部署和使用。"momo"可能是开发团队或...
Java数据库连接池与简单自定义标签是两个在Web开发中至关重要的概念,它们极大地提高了应用程序的性能和可维护性。 首先,我们来深入理解“Java数据库连接池”。数据库连接池是一种管理数据库连接的技术,它允许...
`opentelemetry-java-instrumentation` 支持插件化,开发者可以通过实现 SPI 接口为特定库或框架添加自定义的监控逻辑。源码中,我们可以研究如何编写这样的插件,以及它们如何被自动加载和执行。 9. **兼容性和...
当尝试在Java Project中处理自定义标签时,由于缺少必要的环境和依赖,会导致运行时错误。 异常`Java.lang.NoClassDefFoundError: JspException`是一个常见的运行时异常,它表明在类路径中找不到指定的类(在这个...
在移动应用开发中,消息推送服务是不可或缺的一部分,它能够帮助开发者向用户实时发送通知或消息,提高用户的活跃度与粘性。极光推送(JPush)作为国内知名的推送服务提供商,提供了丰富的API接口供开发者使用。本文...
Java Web TLD(Tag Library Descriptor)是Java服务器页面(JSP)技术中一个重要的概念,它是用来定义自定义标签库的XML文件。在Java Web开发中,TLD文件扮演着元数据的角色,它包含了标签库中每个自定义标签的详细...
例如,可以设置系统默认的LookAndFeel或自定义的LookAndFeel,以使应用看起来更符合操作系统的风格或者具有独特的设计。 此外,Swing 提供了一些高级组件,如JTable用于显示和编辑表格数据,JTree用于展示树形结构...
首先,自定义标签在日历应用中通常用于增强用户体验,让用户可以更方便地管理和识别不同的日程。例如,用户可能希望为工作、家庭活动或旅行等设置不同颜色或形状的标签。实现这一功能需要对Android的日历API有深入...
在这个场景中,我们提到的是使用自定义标签实现类似于百度分页的效果,这是一种常见的用户体验优化策略。百度的分页设计简洁明了,易于用户操作,因此在Web应用中广泛模仿。 首先,让我们了解一下Struts2框架。...