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

📄 formhandler.java

📁 EasyJWeb是基于java技术
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
					mLoader = f.getAnnotation(MultiPOLoad.class);
				}
				if (innerProperty == null)
					innerProperty = f.getAnnotation(InnerProperty.class);
				if (ops == null)
					ops = f.getAnnotation(OverrideProperty.class);
			} catch (java.lang.NoSuchFieldException e) {

			}
			if (loader != null && !"".equals(loader.name())) {
				overrs.put(name, loader.name());
			}
			if(mLoader != null && !"".equals(mLoader.name())){
				overrs.put(name, mLoader.name());
			}
			if (innerProperty != null) {
				OverrideProperty[] o = innerProperty.overrides();
				for (int j = 0; j < o.length; j++) {
					overrs.put(o[j].name(), o[j].newName());
				}
			}
			
			if (ops != null)
				overrs.put(ops.name(), ops.newName());
			//logger.debug(mLoader==null);
			// 尝试自动加载POLoad标注的对象
			if (loader != null && container != null)// DAO关联属性
			{
				POLoadDao loadDao = (POLoadDao) container.getBean(loader
						.loadDao());
				if (loadDao != null) {
					Object rawObj = map.get(overrs.containsKey(name) ? overrs
							.get(name) : name);
					logger.debug("通过DAO加载关联对象:" + loadDao + ",rawObj:" + rawObj
							+ ",loader:" + loader.name() + "," + loader);
					if (rawObj != null && !"".equals(rawObj)) {
						propertyValue = loadDao.get(propertys[i].getPropertyType(), (Serializable) BeanUtils.convertType(rawObj, loader.pkClz()));
						// wrapper.setPropertyValue(name,
						// v);
					}
				}
			} else if (innerProperty != null)// 内嵌属性加载,此处写死了,只能加载简单的属性值
			{
				Object innerObj = wrapper.getPropertyValue(propertys[i]
						.getName());
				if (innerObj == null)
					innerObj = com.easyjf.beans.BeanUtils
							.instantiateClass(propertys[i].getPropertyType());
				BeanWrapper innerWrapper = new BeanWrapper(innerObj);
				java.beans.PropertyDescriptor[] innerP = innerWrapper
						.getPropertyDescriptors();
				for (int j = 0; j < innerP.length; j++) {
					String pName = innerP[j].getName();
					if (innerWrapper.isWritableProperty(pName)) {// 对内嵌对象的具体属性的值,不进行验证,只能整体进行验证
						/**
						 * 首先取名为address.city这样的字段
						 */
						String fieldName = propertys[i].getName() + "." + pName;
						Object v = map
								.get(overrs.containsKey(fieldName) ? overrs
										.get(fieldName) : fieldName);
						/**
						 * 然后再取city这段
						 */
						if (v == null)
							v = map.get(overrs.containsKey(pName) ? overrs
									.get(pName) : pName);
						try{
						innerWrapper.setPropertyValue(pName, v);// 进行赋值
						}
						catch(Exception e)
						{
							//@see(http://jira.easyjf.com/browse/EASYJWEB-20)
							validateManager.addCustomError(fieldName, "数据类型转换出错!",
									ValidateType.Field);
						}
					}
				}
				propertyValue = innerObj;
				// wrapper.setPropertyValue(name, innerObj);
			}else if(mLoader != null){
				//加载List类型对象
				logger.debug("MultiPOLoad加载开始……");
//				if(propertys[i] instanceof List){
					List loaderObj = new ArrayList();
					POLoadDao loadDao = (POLoadDao) container.getBean(mLoader
							.loadDao());
					if (loadDao != null) {
						Object rawObj = map.get(overrs.containsKey(name) ? overrs
								.get(name) : name);
						logger.debug("通过DAO加载关联的List对象:" + loadDao + ",rawObj:" + rawObj
								+ ",loader:" + mLoader.name() + "," + mLoader);
						if (rawObj != null && !"".equals(rawObj)) {
							String[] tempArr = {};
							if(rawObj instanceof String[]){
								tempArr = (String[])rawObj;
							}else{
								String tempStr = (String)rawObj;
								tempArr = tempStr.split(",");
							}
							logger.debug("--------------------tempArr:"+tempArr.length);
							for(String key:tempArr){
								if(!"".equals(key)){
									Object tempValue = loadDao.get(mLoader.targetClz(), (Serializable) BeanUtils.convertType(key, mLoader.pkClz()));
									if(tempValue != null){
										loaderObj.add(tempValue);
									}
								}
							}
							propertyValue = loaderObj;
							// wrapper.setPropertyValue(name,
							// v);
						}
					}
//				}
			} else {
				// 普通属性的对象加载
				String fieldName = overrs.containsKey(name) ? (String) overrs
						.get(name) : name;
				Object value = map.get(fieldName);
				/**
				 * 对于Field属性,在这里进行验证
				 */
				if (validateObject != null
						&& validateObject.getType() == ValidateType.Field) {
					validateObject.doValidate(value);
					if (validateObject.getErrors().getErrorObject(fieldName) != null
							|| !map.containsKey(fieldName)) {
						// 验证出错,则不改变PO对象的值
						continue;
					}
				} else if (validateObject == null
						&& !map.containsKey(fieldName)) {
					continue;// 如果不需要验证,表单中又没有指定filedName的值,则直接跳转
				}
				if (map.containsKey(fieldName)) {
					/**
					 * ignoreBlankString是指允许把指定的属性指通过""设置成为null
					 */
					if (ignoreBlankString && "".equals(value)) {
						if (validateObject != null
								&& validateObject.getType() == ValidateType.Property) {
							validateObject.doValidate(propertyValue);
							if (validateObject.getErrors().getErrorObject(name) != null) {
								// 验证出错,则不改变PO对象的值
								continue;
							}
						}
						// continue;
					} else {
						try {
							/**
							 * 如果value为空字符串,则指定的对你将不进行转换
							 */
							if (value != null) {
								propertyValue = BeanUtils.convertType(value,
										propertys[i].getPropertyType());
							}
							// wrapper.setPropertyValue(name,
							// value);
						} catch (java.lang.Exception e) {
							validateManager.addCustomError(name, "数据类型转换出错!",
									ValidateType.Field);
							logger.error(name + "数据类型处理出错!" + e.getMessage());
							continue;
						}
					}
				}
			}
			/**
			 * 如果是对属性进行验证,则在属性值处理完毕后再进行属性值验证操作
			 */
			if (validateObject != null
					&& validateObject.getType() == ValidateType.Property) {
				
				validateObject.doValidate(propertyValue);
				if (validateObject.getErrors().getErrorObject(name) != null) {
					// 验证出错,则不改变PO对象的值
					continue;
				}
			}
			// wrapper.setPropertyValue(name,
			// propertyValue);
			// System.out.println("正常的值:"+name+"="+propertyValue);
			ret.put(name, propertyValue);
		}
		return ret;
	}

	/**
	 * 把map中的数据转换到obj中,可以设定是否需要忽略空格
	 * 
	 * @param map
	 * @param obj
	 * @param ignoreBlankString
	 */
	public void form2Obj(Map map, Object obj, boolean ignoreBlankString) {
		form2Obj(map, obj, ignoreBlankString, false);// 默认情况下不进行数据回滚
	}

	/**
	 * 把map中的数据转换到obj中,可以设定是否需要忽略空格
	 * 
	 * @param map
	 * @param obj
	 * @param ignoreBlankString
	 */
	public void form2Obj(Map map, Object obj, boolean ignoreBlankString,
			boolean validateRollback) {
		if(obj instanceof Map)
		{
			java.util.Iterator it=map.entrySet().iterator();
			while(it.hasNext())
			{
				java.util.Map.Entry en=(Map.Entry)it.next();
				Object v=((Map)obj).get(en.getKey());
				if(v!=null)
				((Map)obj).put(en.getKey(),BeanUtils.convertType(en.getValue(),v.getClass()));
				//else ((Map)obj).put(en.getKey(),en.getValue());
			}
		}
		else{
		Map propertys = parseForm2Obj(map, obj, ignoreBlankString);
		if (validateRollback && validateManager.getErrors().hasError())
			return;
		java.util.Iterator it = propertys.entrySet().iterator();
		BeanWrapper wrapper = new BeanWrapper(obj);
		while (it.hasNext()) {
			java.util.Map.Entry en = (Map.Entry) it.next();
			wrapper.setPropertyValue((String) en.getKey(), en.getValue());
		}}
	}
	
	public static void main(String[] args){
		String[] str = {"fsda", "fdsa"};
		if("".equals(str)){
			
		}
		System.out.println();
	}
}

⌨️ 快捷键说明

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