- 浏览: 107104 次
- 性别:
- 来自: 合肥
文章分类
最新评论
-
safda1:
没明白为什么要把mac进行分段比较呢?
Java验证IP和MAC地址 -
yiqi1943:
原因是什么呢
MyBatis排序 -
sunlightcs:
在局域网外,获取不到mac地址吧。
Java获得登录的IP和MAC地址
说明:为了使用dhtmlx的Tree控件,动态生成所需的xml文件,通过一个父子关系的节点拼出来。
tag 标签(XMLForTreeTag.java)
tld文件(TldName.tld)
节点类(NodeDTO.java)
引用
只是为了参考
tag 标签(XMLForTreeTag.java)
import java.io.IOException; import java.lang.reflect.Method; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.TagSupport; import org.apache.commons.lang.StringUtils; /** * * @author gby */ public class XMLForTreeTag extends TagSupport { private Object rootNode; private String nodeIdProperty; private String nodeTypeProperty; private String nodeTitleProperty; private String childCollectionProperty; /** * * @return int * @throws JspException */ @Override public int doStartTag() throws JspException { StringBuffer sb = new StringBuffer(); try { sb = toHTML(rootNode, nodeIdProperty, nodeTitleProperty, nodeTypeProperty, childCollectionProperty); } catch (Exception ex) { Logger.getLogger(XMLForTreeTag.class.getName()).log(Level.SEVERE, null, ex); } JspWriter out = pageContext.getOut(); try { out.println(sb.toString()); } catch (IOException e) { e.printStackTrace(); } return SKIP_BODY; } /** * <tree id="0" > <item text="name1" id="id1"> <item text="name1-1" id="id1-1"> </item> </item> </tree> * @param rootNode * @param nodeIdProperty * @param nodeTitleProperty * @param nodeTypeProperty * @param childCollectionProperty * @return * @throws Exception */ public StringBuffer toHTML(Object rootNode, String nodeIdProperty, String nodeTitleProperty, String nodeTypeProperty, String childCollectionProperty) throws Exception { StringBuffer sb = new StringBuffer(); sb.append("<tree id=\"0\">\n"); String nodes = this.createXML(rootNode, nodeIdProperty, nodeTitleProperty, nodeTypeProperty, childCollectionProperty, sb); sb.append("</tree>\n"); return sb; } private String createXML(Object node, String nodeIdProperty, String nodeTitleProperty, String nodeTypeProperty, String childCollectionProperty, StringBuffer sb) throws Exception { Class<?> clazz = node.getClass(); //获得属性的get方法名。 String nodeIdMethodName = this.createMethodName(nodeIdProperty); String nodeTitleMethodName = this.createMethodName(nodeTitleProperty); String nodeTypeMethodName = this.createMethodName(nodeTypeProperty); String childCollectionMethodName = this.createMethodName(childCollectionProperty); //根据反射获得method Method nodeIdMethod = clazz.getMethod(nodeIdMethodName, new Class[0]); Method nodeTitleMethod = clazz.getMethod(nodeTitleMethodName, new Class[0]); Method nodeTypeMethod = clazz.getMethod(nodeTypeMethodName, new Class[0]); Method childCollectionMethod = clazz.getMethod(childCollectionMethodName, new Class[0]); if (node != null) { String nodeId = (String) nodeIdMethod.invoke(node, new Object[0]); String nodeTitle = (String) nodeTitleMethod.invoke(node, new Object[0]); String nodeType = (String) nodeTypeMethod.invoke(node, new Object[0]); String itemId = nodeId + "__" + nodeType; sb.append("<item text=\"").append(nodeTitle).append("\" ") .append(" id=\"").append(itemId).append("\">"); List children = (List) childCollectionMethod.invoke(node, new Object[0]); if (children != null && !children.isEmpty()) { for (Object child : children) { this.createXML(child, nodeIdProperty, nodeTitleProperty, nodeTypeProperty, childCollectionProperty, sb); } } sb.append("</item>\n"); } return sb.toString(); } private String createMethodName(String property) { if (StringUtils.isEmpty(property)) { return null; } String method = "get" + property.substring(0, 1).toUpperCase() + property.substring(1); return method; } getters().. setters().. }
tld文件(TldName.tld)
<?xml version="1.0" encoding="UTF-8"?> <!-- edited with XML Spy v4.3 U (http://www.xmlspy.com) by LEGO (LEGO) --> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd"> <taglib> <tag> <name>xmlForTree</name> <tagclass>XMLForTreeTag</tagclass> <info>为显示多选树形拼的XML-dhtmlx</info> <attribute> <name>rootNode</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>nodeIdProperty</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>nodeTypeProperty</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>nodeTitleProperty</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>childCollectionProperty</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> </taglib>
节点类(NodeDTO.java)
import java.io.Serializable; import java.util.List; /** * 树形显示DTO * @author gby */ public class NodeDTO implements Serializable{ /** * node的唯一标识 */ private String id; /** * node的唯一标识 */ private String parentId; /** * node的名称 */ private String name; /** * node的父节点 */ private NodeDTO parentDTO; /** * node的孩子节点 */ private List<NodeDTO> childrenDTO; //节点类型 private String nodeType; getters().. setters().. }
发表评论
-
glassfish--IOP00810011: Exception from readValue on ValueHandler in CDRInputStre
2012-10-09 10:05 2829问题日志信息描述: [#|2012-10-08T18:44:0 ... -
JDK linux 安装 install
2012-08-06 11:03 1406指导手册 1.说明:root是超级用户,test为普通用户 2 ... -
读取,修改jar文件
2012-07-16 14:48 2189读取,修改,操作,编辑,jar文件 文件选择 jarFileS ... -
Oracle JDBC DbUtil jdbc数据库连接
2012-05-26 12:28 2787Oracle JDBC DbUtil jdbc数据库连接 1. ... -
netbeans 多线程 IllegalStateException
2012-05-25 12:28 1503WARNING [org.netbeans.core.wind ... -
JAVA TCP SOCKET
2012-05-24 19:23 1463TcpConnect.java /* * To cha ... -
Java Socket 连接超时
2012-05-24 19:11 1993Java Socket 连接超时设置 String ip ... -
netbeans platform 控件可以自动缩放(放大 缩小)
2012-05-24 18:54 2049netbeans platform 控件可以自动缩放(放大 缩 ... -
netbeans platform TopComponent 重新组合显示
2012-05-22 09:52 1023netbeans platform TopComponent ... -
调用netbeans 平台自己的方法
2012-05-11 10:42 1155全屏 import javax.swing.Action; ... -
JAVA定时执行
2011-07-05 13:44 1896LoadResourceTimerTask.java pa ... -
加载properties文件至java.util.Properties对象
2011-04-07 10:53 986java.net.URL url = Thread.cur ... -
Java验证IP和MAC地址
2010-11-29 16:50 8167ip匹配 /** * 验证reque ... -
Java获得登录的IP和MAC地址
2010-11-29 16:26 13767/** * 通过HttpServle ...
相关推荐
综合上述信息,这个压缩包可能包含了一个基于自定义标签实现的分页库,该库支持通过反射来动态配置分页参数,并且能够高效地处理ResultSet,实现数据库查询的分页。使用"fenPageTld"这个名字的文件很可能是该分页库...
在Java服务器页面(JSP)开发中,自定义标签是一个非常重要的特性,它允许开发者创建可重用的组件,提高代码的可维护性和可读性。本实例将深入讲解如何实现一个基于JSP的自定义分页标签,并涉及到Java反射机制的应用...
例如,我们可以定义一个抽象类`AbstractResAction`,并在其中使用Java反射机制来调用自定义标签的方法。 ```java public abstract class AbstractResAction extends Action { public final ActionForward execute...
1. **创建自定义标签库**:定义一个Java类作为自定义标签的处理器,继承自`freemarker.template.TemplateDirectiveModel`接口,并实现其方法。在这个类中,你可以编写处理标签逻辑的代码。 2. **配置扫描路径**:...
本篇将深入探讨如何自定义Dao,并利用反射技术来实现这一目标。博客链接:[此处无法提供实际链接,故省略] 首先,了解DAO的基本概念。DAO是应用程序中的一个接口或抽象类,它提供了对数据存储的抽象,使得业务逻辑...
现在,我们可以在运行时通过反射来获取附加的自定义属性信息: ```csharp var type = typeof(ViewModel); var attribute = type.GetCustomAttribute(); Console.WriteLine(attribute.Description); // 输出 "这是带...
标签库(Tag Library)在Java中通常是指JSP(JavaServer Pages)中的自定义标签库,它们提供了一种方式来封装复杂的HTML或业务逻辑,使得页面更加易读和可维护。创建一个JSP标签库涉及以下步骤: 1. 创建TLD(Tag ...
【标题】中的“在ashx中利用反射+jquery轻松处理ajax的源码”指的是使用ASP.NET的HTTP Handler(ASHX)结合反射和jQuery技术来高效地处理AJAX请求的实践案例。HTTP Handler是一种轻量级的组件,可以用来处理特定类型...
在.NET框架中,C#是一种强大的面向对象的编程语言,其特性丰富,其中包括了Attribute(属性)和Reflect(反射)这两个重要概念。这两者在实际开发中有着广泛的应用,能够帮助程序员实现元数据的标记、运行时代码的...
在WinForm应用中,自定义特性(Custom Attributes)是一个非常实用的功能,允许我们为类、方法、属性等编程元素添加元数据,这些元数据可以在运行时被反射机制读取,从而实现各种高级功能。本资源“winform 自定义...
C#中的PropertyGrid控件可以帮助我们实现这一功能,通过反射获取并编辑控件的属性。 3. **布局管理**:表单中的控件应该能够根据需要进行布局调整,如网格布局、流式布局等。C#的LayoutManger类可以用来管理控件的...
这使得我们可以在运行时通过反射获取这些附加的标签信息。 WPF(Windows Presentation Foundation)是.NET Framework的一部分,主要用于构建富客户端应用程序。虽然示例主要关注的是C#的自定义属性,但这些属性也...
标签中的"反射"是一个关键概念,它是Java和Android编程中的高级技巧,允许程序在运行时动态地获取类的信息并调用其方法。在自定义来电秀中,反射可能被用来访问或修改系统私有的来电显示服务,因为这些服务通常不...
标签标注 代码跳转 代码调试 错误检查 api提示接口(api导出工具:xlua ulua slua cocos2d2.x cocos2d3.x) 方法定义列表 自定义宏+模板文件 unity lua调试可查看c#类型值(反射机制) 针对各种框架不同的优化
7. **应用实例**:可能的应用场景包括动态加载模块、自定义序列化/反序列化、动态类型检查、调试工具等。 8. **源代码管理**:"master"分支通常代表项目的主线开发,解压后可以研究源代码的组织结构、设计模式以及...
标签“反射Excel”再次强调了文章的核心主题——利用反射来操作Excel。 #### 代码段分析与知识点扩展 ##### 1. 引入命名空间 ```csharp using System; using System.Collections.Generic; using System.Linq; ...
在这个例子中,`@ExcelField`是我们自定义的注解,用于指定字段的标题和对齐方式。接下来,我们需要一个工具类来处理反射和注解,读取对象的属性并将其写入Excel: ```java public class ExcelExporter { public ...