2010-11-06 50 views
0

我想填充下拉列表中的項目。如何在Wicket中創建下拉列表?

我已經實現從我的數據庫獲取值,但是我無法將它們添加到下拉列表中。

public List<String> getNames(){ 
     List<String> polNames = new LinkedList<String>(); 
       try { 
      String query ="SELECT names FROM clinics"; 
      Statement statement = this.connection.createStatement(); 
      ResultSet result = statement.executeQuery(query); 
      while(result.next()){ 
       polNames.add(result.getString("name")); 
      } 
     } 
     catch(SQLException ex){ 
      throw new UnsupportedOperationException(ex.getMessage()); 
     } 
     return polNames; 
    } 

以上,我將值賦予polNames。我想將polNames添加到下拉列表中。

此外,當從列表中單擊一個值時,我想要做一個新的查詢。我怎樣才能做到這一點?

回答

1

要創建列表,您可以使用the DropDownChoice class。下面是它可能看起來像一個示例:

DropDownChoice<String> clinicNames = 
    new DropDownChoice<String>("clinicNames", 
           new PropertyModel<String>(this, "selectedName"), 
           polNames) { 
     // @Override 
     // public void onSelectionChanged() { 
     //  // Generate and submit your query here 
     // } 
    }; 

// EDIT: onSelectionChanged() is a final method; use this instead 
OnChangeAjaxBehavior clinicNamesListener = new OnChangeAjaxBehavior() { 
    protected void onUpdate(AjaxRequestTarget target) { 
     // Generate and submit your query here 
    } 
}; 
clinicNames.add(clinicNamesListener); 

這將使新的下拉列表中有「clinicNames,」在polNames與值填充的檢票ID,即在更新你的代碼中selectedName值。

+0

onSelectionChanged()無法在org.apache.wicket.markup.html.form.IOnChanegeListener中實現onSelectionChanged()試圖分配更弱的訪問權限,這是公開的。 – jacop41 2010-11-07 00:20:17

+0

jacop41 2010-11-07 00:26:39

+0

這意味着您在標記中聲明瞭wicket:id = form,但是您要麼根本沒有將組件添加到您的頁面,或者層次結構不匹配 – jacop41 2010-11-07 00:27:40