【发布时间】:2010-09-20 14:48:15
【问题描述】:
我有一个用于性别的 Tapestry PropertyModel。现在下拉列表只显示男性和女性,因为这些是我模型中唯一的值。我想添加一个“选择一个选项”选项。有没有一种标准方法可以做到这一点,而不必为我的模型添加假值?我还希望它足够聪明,知道如果该字段是必需的,他们不能将其设置为“选择一个选项”。
【问题讨论】:
我有一个用于性别的 Tapestry PropertyModel。现在下拉列表只显示男性和女性,因为这些是我模型中唯一的值。我想添加一个“选择一个选项”选项。有没有一种标准方法可以做到这一点,而不必为我的模型添加假值?我还希望它足够聪明,知道如果该字段是必需的,他们不能将其设置为“选择一个选项”。
【问题讨论】:
在 Tapestry 5 上,您只需设置 blankLabel 属性。
在 Tapestry 4 上,只需将该功能添加到您的 PropertyModel 或将其包装在一个 LabeledPropertySelectionModel 上会更容易,正如 Brian 已经提到的(您可以在 JavaDoc 中查找该类以了解您的 Tapestry 版本)。
在 Tapestry 3 上,您必须将该功能添加到模型中,因为 LabeledPropertySelectionModel 是在版本 4 中引入的。
【讨论】:
一种解决方案是使用 LabeledPropertySelectionModel 来包装真实模型,例如:
new LabeledPropertySelectionModel(new GenderModel(), "Choose an Option")
该类的 JavaDoc 说:
装饰基础 IPropertySelectionModel 添加初始属性。标签选项和初始属性的值是可配置的。
【讨论】: