2012-06-08 48 views
1

我正在使用wicket開發搜索功能。 DropDownChoice類用於選擇要搜索的搜索項目的哪個字段。如何完成此操作,以便直接從搜索的類中獲取下拉式名稱。Wicket:從類變量名稱中獲取DropDownChoice列表項目名稱

比方說,我有一個類FooBar包含變量foobar。如果我要選擇哪一個是選擇的標準場,我怎麼可以從一個資源文件給我的資源文件中值的命名一樣

FooBar.foo="Search for foo" 
    FooBar.bar="Search for bar" 

資源文件應該是這樣的,但如何把這個在java類的一面?

+0

我的目標是這樣的:我有一個選擇器(搜索foo或bar),然後搜索字段,根據該選擇搜索foos或bars。我的問題是如何映射所有東西,只有FooBar.name是i18n所必需的,而且當所有東西都正確映射時,搜索就像魔術一樣。有這樣的映射嗎?我是Wicket的新手,但我讀過例如關於PropertyModel和一切似乎這將是可能的,但不知道如何。 – mico

+0

沒有具體的檢票。我能看到的唯一方法是使用java反射api。有關想法,請參閱http://tutorials.jenkov.com/java-reflection/fields.html – bert

回答

1

首先,你可以得到的字段和值這樣

import java.lang.reflect.Field; 

public class FooBar extends AbstractFooBar{ 
public String foo = "Search for foo"; 
public String bar = "Search for bar"; 

public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException { 
    Field[] fields = FooBar.class.getFields(); 
    // Field[] fields = AbstractFooBar.class.getFields(); 
    for (Field field : fields) { 
     System.out.println(field.get(new Object()).toString()); 
    } 
} 

} 但你可以猜你不能使用任何抽象的。您的所有領域也必須公開。

您可以使用資源文件初始化您的類。在使用反射獲得字段後,您可以使用IChoiceRenderer將字段傳遞給DropDownChoice。

您的DropDownChoice類型可以是Field,您可以通過給出字段列表來初始化它。然後在你的IChoiceRenderer中你可以得到模型對象。

我希望這會有所幫助。