Tapestry:下拉组件的默认值

mar*_*tin 4 select tapestry drop-down-menu

我将以下代码用于select-component:

Java的类:

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

模板:

<select t:id="demoSelect" />
Run Code Online (Sandbox Code Playgroud)

这将呈现如下所示:

<select id="demoSelect" name="demoSelect">
    <option value=""></option>
    <option value="1">first</option>
    <option value="2">second</option>
    <option value="3">third</option>
</select>
Run Code Online (Sandbox Code Playgroud)

我正在寻找的行为是,预先选择某个选项(这应该在页面类中决定).如何在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>
Run Code Online (Sandbox Code Playgroud)

是否足以改变模型(我不这么认为),或者我是否必须扩展Select-component本身.我发现这篇文章看起来非常有前途,但遗憾的是所有源代码的链接都已经死了.

Hen*_*ing 6

没有必要扩展任何东西.只需在渲染之前将属性设置为值即可:

@Property
private SomeType someId;

@SetupRender
void initSomeId() {
    if (this.someId == null) {
       this.someId = this.getDefaultValueForSomeId();
    }
}
Run Code Online (Sandbox Code Playgroud)