📄 ajaxutil.java.svn-base
字号:
package com.easyjf.web.ajax;
import java.lang.reflect.Array;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.easyjf.beans.BeanUtils;
import com.easyjf.beans.BeanWrapper;
/**
* 这个工具类的一些方法正确执行需要先安装一个AjaxServiceContainer
* @author 大峡
*
*/
public class AjaxUtil {
private static AjaxServiceContainer serviceContainer;
public static boolean isRemoteMethod(String serviceName,Method method)
{
if(!Modifier.isPublic(method.getModifiers()))return false;
return true;
}
public static String getJSON(Object value) {
HandleJSON handler=new HandleJSON();
return handler.getJSON(0,value);
}
public static List getAjaxStub(Object bean)
{
List ret=new ArrayList();
Method[] ms=bean.getClass().getMethods();
for(int i=0;i<ms.length;i++)
{
if(ms[i].getDeclaringClass()!=Object.class)
{
Map map=new HashMap();
map.put("name",ms[i].getName());
List para=new ArrayList();
Class[] paras=ms[i].getParameterTypes();
if(paras!=null && paras.length>0)
{
for(int j=0;j<paras.length;j++)
{
Map p=new HashMap();
p.put("name", "p"+j);
p.put("type",paras[j].getName());
para.add(p);
}
}
map.put("para",para);
ret.add(map);
}
}
return ret;
}
public static AjaxServiceContainer getServiceContainer() {
return serviceContainer;
}
public static void setServiceContainer(AjaxServiceContainer serviceContainer) {
AjaxUtil.serviceContainer = serviceContainer;
}
static class HandleJSON
{
private java.util.Set stack=new java.util.HashSet();
//private int depth=0;
public String getJSON(int depth,Object value)
{
String ret = "";
if (value == null)
ret += "null";
else if (JSonConvertUtil.isSimpleType(value.getClass()))
ret += (value instanceof String||value instanceof Date) ? "\"" +value + "\"" : value;
else if (value instanceof Collection) {
ret = "[";
java.util.Iterator it = ((Collection) value).iterator();
while (it.hasNext()) {
Object v=it.next();
//stack.add(v);
ret += getJSON(depth,v);
//stack.remove(v);
if (it.hasNext())
ret += ",";
}
ret += "]";
} else if (value.getClass().isArray()) {
int max = Array.getLength(value);
ret = "[";
for (int i = 0; i < max; i++) {
ret += getJSON(depth,Array.get(value, i));
if (i < max - 1)
ret += ",";
}
ret += "]";
} else{
//stack.add(value);
//if(!stack.contains(value))depth++;
ret = "{\n";
BeanWrapper wrapper = new BeanWrapper(value);
java.beans.PropertyDescriptor[] pds = wrapper
.getPropertyDescriptors();
for (int i = 0; i < pds.length; i++) {
String propertyName=pds[i].getName();
if (!"class".equals(propertyName) && wrapper.isReadableProperty(propertyName) && (serviceContainer==null ||serviceContainer.isAllowProperty(value.getClass(), propertyName))) {
ret += propertyName + ":";
Object v = wrapper.getPropertyValue(propertyName);
//System.out.println(stack.contains(value));
if(BeanUtils.checkLazyloadNull(v)){ret+="null";}
else if (depth<3 && !stack.contains(v)) {//通过stack来避双向关联无限伸缩//
//System.out.println("加载:"+propertyName+":"+v);
stack.add(v);
// System.out.println("添加一个"+v);
//depth++;
ret += getJSON(depth+1,v);
stack.remove(v);
} else
ret += "undefined";
// if (i < pds.length - 1)
ret += ",\n";
}
}
if(ret.length()>3)ret=ret.substring(0,ret.length()-2);
ret += "\n}";
}
//stack.clear();
return ret;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -