オブジェクトタイプが何であるかを知らなくても、休止状態のデータベースにデータを挿入するための単純なクラッドフォームを作成しようとしています。最終的な目標は、データベース内のテーブルごとに1つの挿入フォームのみを持つことです。これまでのところ、現在のオブジェクトにあるメソッドを取得し、セットされたメソッドがあるかどうかを確認し、セットがあるすべてのフィールドにテキスト入力を作成します。
UIViewRoot viewRoot = FacesContext.getCurrentInstance().getViewRoot();
HtmlPanelGrid hpg = (HtmlPanelGrid) viewRoot.findComponent("panel");
for (Method method : declaredFields) {
String name = method.getName();
if (name.contains("set")) {
HtmlOutputText hot = new HtmlOutputText();
HtmlInputText hit = new HtmlInputText();
hot.setValue(name.substring(3));
try {
hit.setValue(newObject.getClass().getMethod(name, String.class));
} catch (Exception ex) {
Logger.getLogger(ReflectController.class.getName()).log(Level.SEVERE, null, ex);
}
hpg.getChildren().add(hot);
hpg.getChildren().add(hit);
}
}
ここで、newObjectは、後で休止状態でデータベースに挿入されるオブジェクトです。私の問題はこれです:
そのオブジェクトから現在作成されているテキスト入力に特定のフィールドを割り当てるにはどうすればよいですか。これまでのところ、上記のようにメソッドを値に入れると、その入力のvalue属性にメソッドが出力されます。私が欲しいのは、このフォームが送信されたときに、そのテキストボックスの値をその名前のプロパティに割り当てるためです。