2011-07-21 7 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でこれをどのように設定できますか?基本的に私は、例えば、適切なオプションのための「選択」をレンダリングするためにタペストリーを指示する必要があります:

<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

何かを拡張する必要はありません。あなたはそれが自動的にあなたがblankOption="NEVER"blankOption="AUTO"を変更することができ、最初のオプションをデフォルトにしたい場合は、この問題を解決するために

@Property 
private SomeType someId; 

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

おかげで、私はちょうどこの簡単な方法を見落とし。 – martin

1

もう一つの簡単な方法:だけレンダリングする前の値にプロパティを設定すると、トリックを行います。

時にはのドロップダウンリストの不要な最初の空白スペース(タペストリー機能)が削除されます。ユーザがセレクションを空のままにすることができず、例外処理が解放されるようにすると便利です。

関連する問題