📄 formhandler.java
字号:
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 + -