SSブログ

リフレクション:親クラス、getter対象、実行結果 [カスタムタグ]

■hiddenタグ生成:親クラスの配列をフィールドに持つgetterへ設定する

package alpha.web.tag;

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;

import alpha.web.system.form.SectionCondForm;

public class BusinessHiddenTagHandler extends BeanHiddenTagHandler {

public static void main(String args[]) throws ReflectiveOperationException {

BusinessHiddenTagHandler main = new BusinessHiddenTagHandler();

SectionCondForm form = new SectionCondForm();

// 親クラスのメソッド一覧
Method[] methods = form.getClass().getSuperclass().getMethods();

// 対象フィールド名(getter/setterのget/setを除外した文字列)
List<String> fieldList = new ArrayList<String>();

// 対象フィールド名(値取得用のメソッドリスト)
List<Method> getterMethodList = new ArrayList<Method>();

// メソッドの中でgetterだけを抽出してリストに追加
for (Method method : methods) {
String methodName = method.getName();
System.out.println("->" + methodName);

// getterか判定。戻り値の型で配列か判定するためsetterは使えない
if (methodName.startsWith("get") && !methodName.equals("getClass")) {
// getterメソッド追加
getterMethodList.add(method);

// フィールド名の追加(hidden出力項目名)
String field = methodName.substring(3);
field = field.substring(0, 1).toLowerCase() + field.substring(1, field.length());

// 配列の場合、[0]を追加。(1レコードしか登録しない前提)
if (method.getReturnType().isArray()) {
field = field + "[0]";
}
fieldList.add(field);
}
}

for (int i = 0; i < fieldList.size(); i++) {

String[] value = (String[]) getterMethodList.get(i).invoke(form);
System.out.println(fieldList.get(i) + "=" + value[0]);

String hiddenTag = main.getHiddenTag(fieldList.get(i), value[0]);
System.out.println(hiddenTag);
}

}

}

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。