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

📄 ajaxutil.java.svn-base

📁 EasyJWeb是基于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 + -