我想創建一個簡單的crud表單來將數據插入到具有hibernate的數據庫中,而不知道對象類型是什麼。最終目標是對數據庫中的每個表只有一個插入表單。到目前爲止,我得到了當前對象所擁有的方法,請檢查它是否有任何set方法,併爲每個有set的字段創建一個文本輸入。用java反射動態創建JSF表單
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是稍後將用hibernate插入到數據庫中的對象。我的問題是這樣的:
如何將該對象中的某個字段分配給正在創建的文本輸入。到目前爲止,如果我把方法放在上面這樣的值中,它只會在該輸入的value屬性中輸出方法。我想要的是,當這個表單submited時,用於將該文本框中的值分配給具有該名稱的屬性。