package com.lxit.company.util;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.apache.log4j.Logger;
import com.lxit.company.action.GoodsAction;
public class ActionFormUtil {
private Logger logger = Logger.getLogger(GoodsAction.class);
private static ActionFormUtil instance = null;
public ActionFormUtil() {
}
public static synchronized ActionFormUtil getInstance() {
if (null == instance) {
instance = new ActionFormUtil();
}
return instance;
}
/**
*
* 〈得到ActionForm节点〉
* @param [actionFormKey] [key值]
* @return [Object]
* @Author Erin
*/
public Object getActionForm(String actionFormKey) {
logger.debug(StringUtil.append("getActionForm", Common.BEGIN));
ConfigUtil configUtil = new ConfigUtil();
// action节点对应的form名
String form = configUtil.getActionFormName(actionFormKey);
// ActionForm类路径
String actionForm = configUtil.getActionFormValue(form);
Object object = null;
try {
object = Class.forName(actionForm).newInstance();
} catch (InstantiationException e) {
logger.error(StringUtil.append("getActionForm", e.getMessage()));
} catch (IllegalAccessException e) {
logger.error(StringUtil.append("getActionForm", e.getMessage()));
} catch (ClassNotFoundException e) {
logger.error(StringUtil.append("getActionForm", e.getMessage()));
}
logger.debug(StringUtil.append("getActionForm", Common.END));
return object;
}
/**
*
* 〈map集合到object映射〉
*
* @param [map] [Map集合]
* @param [object] [Object对象]
* @return [Object]
* @Author Erin
*/
public Object mapToObject(Map map, Object object) {
logger.debug(StringUtil.append("mapToObject", Common.BEGIN));
// 表单key集合
Set keySet = map.keySet();
// 对象map集合
Map fieldsMap = getFields(object);
// 遍历key集合
for (Object object2 : keySet) {
// 判断表单map集合是否包含字段
if (fieldsMap.containsKey(object2)) {
Method[] methods = object.getClass().getMethods();
for (Method method : methods) {
// 方法名
String name = method.getName();
// 判断值匹配
if (name.startsWith("set")
&& object2.equals(name.substring(3, 4)
.toLowerCase() + name.substring(4))) {
try {
// 返回数组
String[] str = (String[]) map.get(object2);
// 对象赋值
method.invoke(object, str[0]);
} catch (IllegalArgumentException e) {
logger.error(StringUtil.append("mapToObject", e.getMessage()));
} catch (IllegalAccessException e) {
logger.error(StringUtil.append("mapToObject", e.getMessage()));
} catch (InvocationTargetException e) {
logger.error(StringUtil.append("mapToObject", e.getMessage()));
}
}
}
}
}
logger.debug(StringUtil.append("mapToObject", Common.END));
return object;
}
/**
*
* 〈得到map集合的字段〉
* @param [object] [Object的对象]
* @return [Map]
* @Author Erin */
public Map getFields(Object object) {
logger.debug(StringUtil.append("getFields", Common.BEGIN));
Map map = new HashMap();
Method[] methods = object.getClass().getMethods();
for (Method method : methods) {
String name = method.getName();
if (name.startsWith("set")) {
String field = name.substring(3, 4).toLowerCase()
+ name.substring(4);
map.put(field, null);
}
}
logger.debug(StringUtil.append("getFields", Common.END));
return map;
}
}
分享到:
相关推荐
2. `ActionFormUtil.java`: 这可能是一个通用的ActionForm辅助类,提供了一些对ActionForm操作的静态方法,比如验证表单数据、填充默认值或进行数据转换等。 3. `config.xml`: 这是一个配置文件,很可能包含了Struts...
关于组织参加“第八届‘泰迪杯’数据挖掘挑战赛”的通知-4页
PyMySQL-1.1.0rc1.tar.gz
技术资料分享CC2530中文数据手册完全版非常好的技术资料.zip
docker构建php开发环境
VB程序实例,可供参考学习使用,希望对你有所帮助
pytz库的主要功能 时区转换:pytz库允许用户将时间从一个时区转换到另一个时区,这对于处理跨国业务或需要处理多地时间的数据分析尤为重要。 历史时区数据支持:pytz库不仅提供了当前的时区数据,还包含了历史上不同时期的时区信息,这使得它在处理历史数据时具有无与伦比的优势。 夏令时处理:pytz库能够自动处理夏令时的变化,当获取某个时区的时间时,它会自动考虑是否处于夏令时期间。 与datetime模块集成:pytz库可以与Python标准库中的datetime模块一起使用,以确保在涉及不同时区的场景中时间的准确性。
VB程序实例-为程序添加快捷键.zip
画2、3维的隐含数
pytz库的主要功能 时区转换:pytz库允许用户将时间从一个时区转换到另一个时区,这对于处理跨国业务或需要处理多地时间的数据分析尤为重要。 历史时区数据支持:pytz库不仅提供了当前的时区数据,还包含了历史上不同时期的时区信息,这使得它在处理历史数据时具有无与伦比的优势。 夏令时处理:pytz库能够自动处理夏令时的变化,当获取某个时区的时间时,它会自动考虑是否处于夏令时期间。 与datetime模块集成:pytz库可以与Python标准库中的datetime模块一起使用,以确保在涉及不同时区的场景中时间的准确性。
加载虚拟光驱并打开ma软件.
VB程序实例-图像的缩小.zip
Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
yolo系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值
推荐几个国外 Java 大佬的优质博客.docx
Arduino一分钟快速在vs code 编译开发Arduino
强网杯objective-c可视化演示5中的常见排序算法,包括选择排序、气泡排序、插入排序、快速排序、堆排序等.zip
VB程序实例,可供参考学习使用,希望对你有所帮助
yolo系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值
强网杯