2010-11-14 24 views
0

我有一個listView從數據庫中列出一個表,並且我有一列來編輯一行。編輯鏈接將響應設置爲編輯頁面。編輯頁面的構造函數需要一個與數據庫表相關的對象。我在編輯頁面中有一個dropdownchoice。我想用對象實際值來初始化dropdownchoice的選定值,而不是「選擇一個」選項。 groupDropDownChoice.setModelObject(user.getGroupId());不處理問題。我試過user.getGroupName(),只是用戶對象他們都沒有工作......該怎麼辦?感謝在dropdownChoice中設置默認模型對象?

public editUserPage(final User user) { 
     super(); 
     try { 
      DatabaseApp db = new DatabaseApp(); 
      groupTypes = db.getGroups(); 
      hospitals = db.getHospitals(); 
      polikliniks = db.getPolikliniks(); 
     } catch (ClassNotFoundException ex) { 
      Logger.getLogger(editUserPage.class.getName()).log(Level.SEVERE, null, ex); 
     } catch (SQLException ex) { 
      Logger.getLogger(editUserPage.class.getName()).log(Level.SEVERE, null, ex); 
     } 

     addUserForm = new Form("form"); 
     groupDropDownChoice = new DropDownChoice("type", new Model(""), groupTypes, 
               new IChoiceRenderer() { 

      public Object getDisplayValue(Object object) { 
       return ((Group) object).getName(); 
      } 
      public String getIdValue(Object object, int index) { 
       return Integer.toString(index); 
      } 
     }); 
     groupDropDownChoice.setModelObject(user.getGroupId()); 

回答

1

假如你在數據庫的方法返回一組給定的ID,這應該工作:

groupDropDownChoice = new DropDownChoice("type", new Model(db.getGroupById(user.getGroupId())), groupTypes, ... 

最後一行(其中setModelObject叫)在您的代碼段是多餘的,因爲模型對象可以在組件的構造函數中設置。

0

這不是直接的答案,但可能是你做了你所做的事情的原因 - 你試圖將模型對象設置爲組ID,而你從組對象(不是整數)構造DropDownChoice。因此,如果發佈的代碼是您的實際代碼,並且您沒有停留在1.3x或更低版本,我建議您開始使用通用模型(Wicket 1.4x以上)。鑄造少,型號安全,因此你所做的事情不會發生。