📄 powerbeanutil.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 + -