[英]Working with the Grails g:timeZoneSelect tag?
我想在我的应用程序中使用g:timeZoneSelect
标记,问题是我发现生成的html选择相当不堪重负。
显示了600多个选项,恕我直言,这对用户来说太多了。 也许有人可以指出一个时区列表更易于管理的示例? 也许您看过一个时区选择很好的网站? 我确信超过600个选项在技术上是正确的,但是对于用户而言这就像是噪音。
时区的显示值过长。
例如:“ CST,中部标准时间(南澳大利亚/新南威尔士州)9.5:30.0”
只需“ CST,中部标准时间”或“ Australia / Broken_Hill”会更好
有没有一种方法可以通过我不知道的某种标签属性(无法在文档中找到任何标签)或配置来解决这些问题?
或者,最好的选择是将HTML select包裹在自定义标签lib中,然后“滚动我自己的”解决方案(Id最好不要这样做)。
谢谢
看一下源代码,就无法覆盖“ optionValue”属性,因为它是在taglib方法本身中设置的
所以我想你得自己动手:-(
原始标签的来源在此处 ,这应该是一个很好的起点。 您可能需要这样的东西:
class MyNewTagLib {
static namespace = 'my'
def tzSelect = { attrs ->
attrs['from'] = TimeZone.getAvailableIDs();
attrs['value'] = (attrs['value'] ? attrs['value'].ID : TimeZone.getDefault().ID)
def date = new Date()
// set the option value as a closure that formats the TimeZone for display
attrs['optionValue'] = {
TimeZone tz = TimeZone.getTimeZone(it);
def shortName = tz.getDisplayName(tz.inDaylightTime(date), TimeZone.SHORT);
def longName = tz.getDisplayName(tz.inDaylightTime(date), TimeZone.LONG);
return "${shortName}/${longName}"
}
// use generic select
out << g.select(attrs)
}
}
然后,您可以执行以下操作:
<my:tzSelect/>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.