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...
1、文件说明: Centos8操作系统uwsgi-logger-socket-2.0.27-4.el8.rpm以及相关依赖,全打包为一个tar.gz压缩包 2、安装指令: #Step1、解压 tar -zxvf uwsgi-logger-socket-2.0.27-4.el8.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm
详细介绍及样例数据:https://blog.csdn.net/m0_65541699/article/details/146430518
英伟达Cosmos世界基础模型平台:物理人工智能研究报告.pdf
单片机开发使用
VS2019解复用解码案例
该资源为numpy-2.2.0-cp313-cp313-macosx_14_0_x86_64.whl,欢迎下载使用哦!
2025年安徽池州公交路线及站点矢量shp数据.zip
应用tf.keras.layers.Conv2D/keras.layers.MaxPooling2搭建VGG13网络,网络结构为卷积层[(128,(3,3))+卷积层(64,(3,3))+池化层+dropout(0.5)]*3+Flatten+Dense(128)+Dense(64),Fashion_minst的识别
通过使用Tf.keras.Sequential搭建实现非线性逻辑回归模型。并理解针对问题空间如何设计网络22结构,以及网络结构涉及到的优化器、损失函数的选择,回调函数的使用
该资源为numpy-2.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl,欢迎下载使用哦!
Kashani Sh. - Deep Learning Interview.
蓝桥杯题库的历届真题
基于SVPWM改进的异步电机_感应电机直接转矩控制——针对传统滞环DTC纹波问题的优化策略.pdf
daq采集卡多通道同步采集程序
1、文件说明: Centos8操作系统uuidd-2.32.1-28.el8.rpm以及相关依赖,全打包为一个tar.gz压缩包 2、安装指令: #Step1、解压 tar -zxvf uuidd-2.32.1-28.el8.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm
内容概要:本文深入阐述了面向对象编程(OOP)的关键要素,如对象、类、继承和多态,并探讨了OOP的重要设计原则,包括单一职责、开放封闭、里氏替换、依赖倒置、接口隔离等。详细解读了依赖倒置的设计思路,通过实际代码案例展示了如何利用面向对象的思想改善系统结构,增强了程序灵活性与扩展性。接着介绍了统一建模语言(UML)及其图表的应用范围,特别是UML的不同类型的图如何帮助理解和设计软件系统架构。进一步讲解了三大类经典设计模式:创建型模式(如工厂方法、抽象工厂、生成器、原型、单例),结构型模式(适配器、桥接、组合等)和行为型模式(职责链、命令、迭代器、中介者等)。每种模式均有实例代码演示,便于初学者快速掌握。最后结合具体的工程应用场景分析,引导学习者灵活运用设计模式解决问题。 适用人群:具有初步编程经验,特别是对 Java 编程语言有所了解的技术爱好者和初级开发者。这部分群体正在寻求加深理解面向对象的概念和技巧,掌握设计模式的应用。 使用场景及目标:适用于正在设计小型到中型规模项目的个人和团队。无论是希望构建稳健的应用框架,还是希望通过合理的模块划分降低系统的复杂度,或是提高代码的可维护性和可
数据分析中Pandas DataFrame操作实验:Python中进行数据处理与分析的技术示例
计算机二级计算机基础知识
PHP编程语言实践指南