⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 powerbeanutil.java

📁 使用反射去掉Bean的所有String类型属性的空格
💻 JAVA
字号:
/**
 * 
 */
package com.power.util;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/**
 * @author 康庆
 *
 */
public class PowerBeanUtil {
	private PowerBeanUtil(){}
	

	/**
	 * 使用反射去处掉bean中所有指定了get和set方法的String类型属性的空格
	 * 比如一个属性叫做:name  如果给定了getName,setName 
	 * 本方法会调用getName然后去掉空格然后再调用setName方法设置name属性的值
	 * 
	 * 注意:只有同时指定了get和set方法的String类型属性才会被去掉空格
	 * @param bean 需要去处掉属性的空格的java bean
	 * @return
	 */
	public static Object trim(Object bean){
		if(bean == null){
			return null; 
		}
		Map<String,Method> getter = new HashMap<String,Method>();
		Map<String,Method> setter = new HashMap<String,Method>();
		Method[] methods = bean.getClass().getDeclaredMethods();
		Set<String> fields = new HashSet<String>();
		 
		for(Method meth:methods){
			//如果是get方法 
			if(meth.getName().startsWith("get") && (meth.getReturnType() == String.class) 
					&& (meth.getParameterTypes().length == 0)){
				getter.put(meth.getName(), meth);
			//如果以set开头,只有一个参数而且类型是String,返回的是void
			}else if(meth.getName().startsWith("set") && ("void".equals(meth.getReturnType().getName())) 
					&& (meth.getParameterTypes().length == 1) && (meth.getParameterTypes()[0] == String.class)){
				setter.put(meth.getName(), meth);
			} 
		}  
		/*取出get方法所有的字段 */
		for(String str:getter.keySet()){
			str = str.substring(3);
			if(str.length() >= 1){
				fields.add(str);
			}
		}
		/*取出set方法中所有的字段*/
		for(String str:setter.keySet()){
			str = str.substring(3);
			if(str.length() >= 1){
				fields.add(str);
			} 
		}
		
		for(String field:fields){
			if(getter.containsKey("get" + field) && setter.containsKey("set" + field)){
				Method get = getter.get("get" + field);
				Method set = setter.get("set" + field);
				try{
					set.invoke(bean, StringUtil.trim((String)get.invoke(bean, null)));
				}catch(Exception e){
					System.out.println("方法调用失败:" + e.getMessage());
				}
			}  
		}
		return bean;
	}
	
	/**
	 * 去处一个集合中所有的元素的空格
	 * @param coll
	 * @return
	 */
	public static Collection trim(Collection coll){
		if(coll != null){
			Iterator it = coll.iterator();
			while(it.hasNext()){
				trim(it.next());
			}
		}
		return coll;
	}
	
	/**
	 * 为clsType类型的每个属性 生成struts标签<html:hidden property="xxx"/>
	 * @param clsType
	 */
	public static void generateHiddenString(Class clsType,String prefix){
		if(clsType == null){
			throw new RuntimeException("无法对一个null对象生成html:hidden标签"); 
		}
		Object bean = null;
		try{
			bean = clsType.newInstance();
		}catch(Exception e){
			System.out.println("无法实例化对象:" + clsType);
			return ;
		}
		
		generateHiddenString(bean,prefix);
	}
	
	public static void generateHiddenString(Class clsType){
		generateHiddenString(clsType,null);
	}
	
	public static void generateHiddenString(Object model){
		generateHiddenString(model,null);
	}
	
	/**
	 * 反射出这个bean所有的属性 然后生成struts的<html:hidden property="xxx"/>标签
	 * @param model
	 */
	public static void generateHiddenString(Object model,String prefix){
		if(model == null){
			throw new RuntimeException("无法对一个null对象生成html:hidden标签"); 
		}
		Map<String,Method> getter = new HashMap<String,Method>();
		Map<String,Method> setter = new HashMap<String,Method>();
		Method[] methods = model.getClass().getDeclaredMethods();
		Set<String> fields = new HashSet<String>();
		 
		for(Method meth:methods){
			//如果是get方法 
			if(meth.getName().startsWith("get") && (meth.getParameterTypes().length == 0)){
				getter.put(meth.getName(), meth);
			//如果以set开头,只有一个参数而且类型是String,返回的是void
			}else if(meth.getName().startsWith("set") && ("void".equals(meth.getReturnType().getName())) 
					&& (meth.getParameterTypes().length == 1)){
				setter.put(meth.getName(), meth);
			} 
		}  
		/*取出get方法所有的字段 */
		for(String str:getter.keySet()){
			str = str.substring(3);
			if(str.length() >= 1){
				fields.add(str);
			}
		}
		/*取出set方法中所有的字段*/
		for(String str:setter.keySet()){
			str = str.substring(3);
			if(str.length() >= 1){
				fields.add(str);
			} 
		}
		StringBuffer buffer = new StringBuffer(500);
		boolean flag = (prefix!=null);
		for(String field:fields){
			String head = field.substring(0,1);
			String body = field.substring(1);
			String fieldName = head.toLowerCase() + body;
			if(flag){
				fieldName = prefix + "." + fieldName;
			}
			buffer.append('\t')
				.append("<html:hidden property=\"")
				.append(fieldName)
				.append("\" />")
				.append('\n');
		}
		System.out.println("所有的字段生成隐藏域:");
		System.out.println(buffer.toString());
	}
	
	public static void main(String[] args){
		generateHiddenString(com.power.winfile.model.ts.Ts.class,"ts");
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -