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.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
铅酸电池失效仿真comsol
Java小程序项目源码,该项目包含完整的前后端代码、数据库脚本和相关工具,简单部署即可运行。功能完善、界面美观、操作简单,具有很高的实际应用价值,非常适合作为Java毕业设计或Java课程设计使用。 所有项目均经过严格调试,确保可运行!下载后即可快速部署和使用。 1 适用场景: 毕业设计 期末大作业 课程设计 2 项目特点: 代码完整:详细代码注释,适合新手学习和使用 功能强大:涵盖常见的核心功能,满足大部分课程设计需求 部署简单:有基础的人,只需按照教程操作,轻松完成本地或服务器部署 高质量代码:经过严格测试,确保无错误,稳定运行 3 技术栈和工具 前端:小程序 后端框架:SSM/SpringBoot 开发环境:IntelliJ IDEA 数据库:MySQL(建议使用 5.7 版本,更稳定) 数据库可视化工具:Navicat 部署环境:Tomcat(推荐 7.x 或 8.x 版本),Maven
Java小程序项目源码,该项目包含完整的前后端代码、数据库脚本和相关工具,简单部署即可运行。功能完善、界面美观、操作简单,具有很高的实际应用价值,非常适合作为Java毕业设计或Java课程设计使用。 所有项目均经过严格调试,确保可运行!下载后即可快速部署和使用。 1 适用场景: 毕业设计 期末大作业 课程设计 2 项目特点: 代码完整:详细代码注释,适合新手学习和使用 功能强大:涵盖常见的核心功能,满足大部分课程设计需求 部署简单:有基础的人,只需按照教程操作,轻松完成本地或服务器部署 高质量代码:经过严格测试,确保无错误,稳定运行 3 技术栈和工具 前端:小程序 后端框架:SSM/SpringBoot 开发环境:IntelliJ IDEA 数据库:MySQL(建议使用 5.7 版本,更稳定) 数据库可视化工具:Navicat 部署环境:Tomcat(推荐 7.x 或 8.x 版本),Maven
springboot124中药实验管理系统设计与实现,含有完整的源码和报告文档
解除劳动合同协议书
快速过滤图像融合Matlab代码.rar
强调图像中内核形状(例如直线)的过滤器Matlab代码.rar
在内网linux服务器安装redis 在Linux环境中离线安装Redis是常见的需求,尤其是在内网服务器上,由于无法直接访问公网,我们需要提前下载Redis的源码包并手动安装。下面将详细解释如何进行这一过程。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
微信小程序StartKitw_xapp-startkit
座位选择微信小程序版本
机械臂代码_Mechanical_arm
图像分割测试视频river-light.mp4
前端分析-2023071100789
labview源码参考示例,可供参考学习使用
MPC跟踪轨迹圆形(以后轴为基准)
MATLAB代码:基于主从博弈的智能小区代理商定价策略及电动汽车充电管理 关键词:电动汽车 主从博弈 动态定价 智能小区 充放电优化 参考文档:《基于主从博弈的智能小区代理商定价策略及电动汽车充电管理》基本复现 仿真平台:MATLAB+CPLEX gurobi平台 优势:代码具有一定的深度和创新性,注释清晰,非烂大街的代码,非常精品 主要内容:代码主要做的是一个电动汽车充电管理和智能小区代理商动态定价的问题,将代理商和车主各自追求利益最大化建模为主从博弈,上层以代理商的充电电价作为优化变量,下层以电动汽车的充电策略作为优化变量,通过优化得出最优电价策略以及动态充电策略,代码出图效果非常好,店主已经对代码进行了深入的加工和处理,出图效果非常好,代码质量非常高,保姆级的注释以及人性化的模块子程序,所有数据均有可靠来源,联系后会直接发您资料,保证您学得会,用的起来,简直是萌新福利
springboot154基于Spring Boot智能无人仓库管理,含有完整的源码和报告文档