反射メカニズムを使用してrequestのパラメータを一括取得し、値を割り当てます.
2717 ワード
説明:servletではrequestからパラメータを取得する必要があり、インスタンスオブジェクトに値を割り当てる必要があります.パラメータが少ない場合はgetParameter(String name)を使用します.requestから取得しますが、データが多い場合、コードの冗長性が複雑で技術的な内容がないため、反射を利用してパラメータを一括して取得して値を付与する方法(String、Integer、int、Float、float、Double、double、java.sql.Date、java.util.Dateタイプのデータまたは配列のみを付与)を書きました.
import java.lang.reflect.Field;
import java.sql.Date;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import javax.servlet.http.HttpServletRequest;
/**
* request ,
*
* @author dingshuangen
*
*/
public class Conversion {
public static void convert(T t, HttpServletRequest request) {
//
Class> c = t.getClass();
try {
//
Field[] fs = c.getDeclaredFields();
for (Field f : fs) {
//
f.setAccessible(true);
//
String name = f.getName();
//
Class> type = f.getType();
//
if (type.isArray()) {
System.out.println("s ");
//
String[] str = request.getParameterValues(name);
if (str != null) {
//
if (type == String.class) {
//
f.set(t, str);
} else if (type == int[].class || type == Integer[].class) {//
//
Integer[] args = new Integer[str.length];
// String Integer
for (int i = 0; i < str.length; i++) {
args[i] = Integer.valueOf(str[i]);
}
f.set(t, args);
} else if (type == Float[].class || type == float[].class) {
// float
Float[] args = new Float[str.length];
// String Float
for (int i = 0; i < str.length; i++) {
args[i] = Float.valueOf(str[i]);
}
f.set(t, args);
} else if (type == Double[].class || type == double[].class) {
// Double
Double[] args = new Double[str.length];
// String Double
for (int i = 0; i < str.length; i++) {
args[i] = Double.valueOf(str[i]);
}
f.set(t, args);
}else if(type==Date[].class){// java.sql.Date
Date[] date=new Date[str.length];
for(int i=0;i