2011-07-21 26 views
4

我用一個選擇分量下面的代碼:掛毯:一個下拉列表組件默認值

的Java類:

@Component(parameters = {"blankOption=AUTO", "model=someModel", "value=someId", 
         "zone=someZone"}) 
private Select demoSelect; 

模板:

<select t:id="demoSelect" /> 

這被渲染到如下所示:

<select id="demoSelect" name="demoSelect"> 
    <option value=""></option> 
    <option value="1">first</option> 
    <option value="2">second</option> 
    <option value="3">third</option> 
</select> 

我正在尋找的行爲是,預先選擇了某個選項(這應該在頁面類中決定)。我如何在Tapestry中配置它?基本上,我需要告訴Tapestry的渲染「選擇」爲適當的選項,如:

<select id="demoSelect" name="demoSelect"> 
    <option value=""></option> 
    <option value="1">first</option> 
    <option value="2" selected="selected">second</option> 
    <option value="3">third</option> 
</select> 

是否足以改變模型(我不這麼認爲),還是我不得不延長選擇組件本身。我發現this article,看起來很有希望,但不幸的是,所有到源代碼的鏈接都已死亡。

回答

6

沒有必要延伸任何東西。就在屬性設置爲呈現前值的伎倆:

@Property 
private SomeType someId; 

@SetupRender 
void initSomeId() { 
    if (this.someId == null) { 
     this.someId = this.getDefaultValueForSomeId(); 
    } 
} 
+0

謝謝,我只是忽略了這種直接的方式。 – martin

1

另一種簡單的方式來解決這個問題,如果你想它會自動默認爲可以改變blankOption="AUTO"blankOption="NEVER"第一個選項。

這將刪除有時不必要的初始空白(Tapestry功能)的下拉菜單。有用的是,使用戶無法將選擇留空並釋放異常處理。