リフレクション:親クラス、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);
}
}
}
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);
}
}
}
2018-10-04 07:45