方案:
- 使用map 来接收不确定的参数信息,然后转换到bean上,不会因为参数为null导致解析失败异常!
/**
* 转换map 到bean
* @param map
* @param obj
*/
public static void transMap2Bean(Map<String,Object> map, Object obj) {
try {
BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor property : propertyDescriptors) {
String key = property.getName();
if (map.containsKey(key)) {
Object value = map.get(key);
// 得到property对应的setter方法
Method setter = property.getWriteMethod();
setter.invoke(obj, value);
}
}
} catch (Exception e) {
log.error("transfer error!");
}
}
实现自己的HandlerMethodArgumentResolver,参考
https://sdqali.in/blog/2016/01/29/using-custom-arguments-in-spring-mvc-controllers/
如果参数确定固定为两套或三套方案,可以使用多加一个entity来接收,待测试;
网友评论