2010-07-11 38 views
0

我在玩wicket的窗體輸入組件。我試圖把一個enumDropDownMenuWicket資源 - 找不到字符串?

public enum Choice { ONE, TWO, THREE } 

    cz.oz.wicket.pages.form.FormPage.java 
    -------------- 
    .add(new DropDownChoice("choice", 
    Arrays.asList(Choice.values()), new EnumChoiceRenderer()) 
    ) 

,並增加了屬性文件:

cz.oz.wicket.pages.form.FormPage.properties 
-------------- 
Choice.ONE = Jedna 
Choice.TWO = Dvě 
Choice.THREE = Tři 

據我讀過,它應該工作。
但我得到:

java.util.MissingResourceException: Unable to find property: 'Choice.ONE' 

at org.apache.wicket.Localizer.getString(Localizer.java:344) 
at org.apache.wicket.Localizer.getString(Localizer.java:100) 
at org.apache.wicket.markup.html.form.EnumChoiceRenderer.getDisplayValue(EnumChoiceRenderer.java:82) 
at org.apache.wicket.markup.html.form.EnumChoiceRenderer.getDisplayValue(EnumChoiceRenderer.java:39) 
at org.apache.wicket.markup.html.form.AbstractChoice.appendOptionHtml(AbstractChoice.java:384) 
at org.apache.wicket.markup.html.form.AbstractChoice.onComponentTagBody(AbstractChoice.java:361) 
at org.apache.wicket.Component.renderComponent(Component.java:2619) 
... 

有什麼不對?

感謝,
Ondra

回答

1

的EnumChoiceRenderer不知道到哪裏尋找屬性文件。

您可以通過添加頁面渲染器構造函數的參數告訴它的屬性文件與頁面關聯:

cz.oz.wicket.pages.form.FormPage.java 
    -------------- 
    .add(new DropDownChoice("choice", 
    Arrays.asList(Choice.values()), new EnumChoiceRenderer(this)) 
    ) 
+0

你是對的 - 謝謝:) 順便說一句 - 爲什麼不DropDownChoice的構造函數將自身設置爲renrerer的組件引用(如果該構造沒有參數)?我認爲這不會傷害任何東西。我想提交RFE。 WDYT? – 2010-07-11 23:50:14

+0

但是,它會尋找與DropDownChoice相關的屬性文件,它必須在wicket庫中找到。而且沒有辦法預測你想要的特性與你的特定枚舉相關聯。 您可能會專門爲此枚舉定義DropDownChoice的子類,並使子類擁有資源,這將允許您將這些東西整齊地綁定在一起。 – 2010-07-12 00:27:36

+0

好點!我仍然習慣了Wicket聰明地使用Java的特性。謝謝。 – 2010-07-17 00:07:11