📄 abstractlogicaction.java
字号:
public final List fillBeans(Class objClass, HttpServletRequest request) throws IllegalAccessException, InstantiationException, NoSuchFieldException, ClassCastException {
if (!(objClass.newInstance() instanceof LoginUser)) {
throw new ClassCastException(objClass.getName() + " can't cast to " + LoginUser.class.getName());
}
Class tmpClass = objClass;
Field field;
String fieldName;
String fieldValues[];
Map map = new HashMap();
List list;
int maxLen = 0;
int len;
while (!tmpClass.getName().equals(LoginUser.class.getName())) {
len = tmpClass.getDeclaredFields().length;
for (int i = 0; i < len; i++) {
field = tmpClass.getDeclaredFields()[i];
fieldName = field.getName();
fieldValues = request.getParameterValues(fieldName);
if (fieldValues != null) {
if (maxLen < fieldValues.length) {
maxLen = fieldValues.length;
}
map.put(fieldName, fieldValues);
}
}
tmpClass = tmpClass.getSuperclass();
}
if (maxLen < 1) {
return null;
}
else {
list = new ArrayList();
for (int i = 0; i < maxLen; i++) {
tmpClass = objClass;
Object objInstance = tmpClass.newInstance();
while (!tmpClass.getName().equals(LoginUser.class.getName())) {
len = tmpClass.getDeclaredFields().length;
for (int j = 0; j < len; j++) {
field = tmpClass.getDeclaredFields()[j];
fieldName = field.getName();
fieldValues = (String[]) map.get(fieldName);
if (fieldValues != null && fieldValues.length >= i + 1) {
setFieldValue(field, objInstance, fieldValues[i]);
}
}
tmpClass = tmpClass.getSuperclass();
}
addLoginUserInfo(tmpClass, objInstance, request);
addContextInfo(objInstance, request);
list.add(objInstance);
}
return list;
}
}
/**
* 将请求对象中提交过来的数据封装在List中(从表),同时将登录用户信息封装到对象中
*
* @param objClass bean的类
* @return List List对象
* @throws IllegalAccessException
* @throws InstantiationException
* @throws NoSuchFieldException
* @throws ClassCastException
*/
public final List fillBeans(Class objClass) throws IllegalAccessException, InstantiationException, NoSuchFieldException, ClassCastException {
return fillBeans(objClass, this.request);
}
/**
* 将请求对象中提交过来的数据封装在List中(从表),同时将登录用户信息封装到对象中
*
* @param className bean的类名
* @param request 请求对象
* @return List List对象
* @throws IllegalAccessException
* @throws InstantiationException
* @throws NoSuchFieldException
* @throws ClassCastException
* @throws ClassNotFoundException
*/
public final List fillBeans(String className, HttpServletRequest request) throws IllegalAccessException, NoSuchFieldException, InstantiationException, ClassCastException, ClassNotFoundException {
return fillBeans(Class.forName(className), request);
}
/**
* 将请求对象中提交过来的数据封装在List中(从表),同时将登录用户信息封装到对象中
*
* @param className bean的类名
* @return List List对象
* @throws IllegalAccessException
* @throws InstantiationException
* @throws NoSuchFieldException
* @throws ClassCastException
* @throws ClassNotFoundException
*/
public final List fillBeans(String className) throws IllegalAccessException, NoSuchFieldException, InstantiationException, ClassCastException, ClassNotFoundException {
return fillBeans(Class.forName(className), this.request);
}
/**
* 将数据填充到指定对象方法
*
* @param objInstance
* 指定对象
* @param field
* 字段
* @param value
* 数据
* @throws IllegalAccessException
*/
private void setFieldValue(Field field, Object objInstance, String value)
throws IllegalAccessException {
String fieldType = field.getType().getName();// 取字段的数据类型
field.setAccessible(true);
try {
if (fieldType.equals("java.lang.String")) {
field.set(objInstance, value);
} else if (fieldType.equals("java.lang.Integer")
|| fieldType.equals("int")) {
field.set(objInstance, Integer.valueOf(value));
} else if (fieldType.equals("java.lang.Long")
|| fieldType.equals("long")) {
field.set(objInstance, Long.valueOf(value));
} else if (fieldType.equals("java.lang.Float")
|| fieldType.equals("float")) {
field.set(objInstance, Float.valueOf(value));
} else if (fieldType.equals("java.lang.Double")
|| fieldType.equals("double")) {
field.set(objInstance, Double.valueOf(value));
} else if (fieldType.equals("java.util.Date")) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
formatter.setLenient(false);
field.set(objInstance, formatter.parse(value));
} else if (fieldType.equals("java.sql.Date")) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
formatter.setLenient(false);
Date date = formatter.parse(value);
field.set(objInstance, new java.sql.Date(date.getTime()));
} else if (fieldType.equals("java.lang.Boolean")
|| fieldType.equals("boolean")) {
field.set(objInstance, Boolean.valueOf(value));
} else if (fieldType.equals("java.lang.Byte")
|| fieldType.equals("byte")) {
field.set(objInstance, Byte.valueOf(value));
} else if (fieldType.equals("java.lang.Short")
|| fieldType.equals("short")) {
field.set(objInstance, Short.valueOf(value));
}
} catch (NumberFormatException ex) {
// field.set(objInstance, null); 当使用简单数据类型会抛出异常
} catch (ParseException e) {
field.set(objInstance, null);
} catch (Exception e) {
field.set(objInstance, null);
}
}
/**
* 设置提交标记, 用在添加初始化的Action中, 设置属性到session
*/
public final void setFlag(HttpServletRequest request) {
HttpSession session = getSession(request);
session.setAttribute(SESSIONID_SAVE_KEY, StringUtil.getRandomChar());
}
/**
* 设置提交标记, 用在添加初始化的Action中, 设置属性到session
*/
public final void setFlag() {
setFlag(this.request);
}
/**
* 判断提交标记
*
* @return boolean: true从表单提交, false刷新提交
*/
public final boolean isFlag(HttpServletRequest request) {
HttpSession session = getSession(request);
String sessionID_A = (String) session.getAttribute(SESSIONID_SAVE_KEY);
String sessionID_B = request.getParameter(SESSIONID_SAVE_KEY);
if (sessionID_A == null)
return false;
if (sessionID_B == null)
return false;
return sessionID_A.equals(sessionID_B);
}
/**
* 判断提交标记
*
* @return boolean: true从表单提交, false刷新提交
*/
public final boolean isFlag() {
return isFlag(this.request);
}
/**
* 数据提交后清除标记, 将添加初始化时在session设置的sessionID属性清空,
*/
public final void resetFlag(HttpServletRequest request) {
HttpSession session = getSession(request);
session.removeAttribute(SESSIONID_SAVE_KEY);
}
/**
* 数据提交后清除标记, 将添加初始化时在session设置的sessionID属性清空,
*/
public final void resetFlag() {
resetFlag(this.request);
}
public final List getCheckFlagMethod() {
return checkFlagMethod;
}
public final void setCheckFlagMethod(List checkFlagMethod) {
this.checkFlagMethod = checkFlagMethod;
}
public final List getMountFlagMethod() {
return mountFlagMethod;
}
public final void setMountFlagMethod(List mountFlagMethod) {
this.mountFlagMethod = mountFlagMethod;
}
public final String getRepeatPostReturn() {
return repeatPostReturn;
}
public final void setRepeatPostReturn(String repeatPostReturn) {
this.repeatPostReturn = repeatPostReturn;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -