首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Grails :timeZoneSelect标记?

使用Grails :timeZoneSelect标记?
EN

Stack Overflow用户
提问于 2010-05-28 06:58:15
回答 1查看 942关注 0票数 0

我想在我的应用程序中使用g:timeZoneSelect标记,问题是im发现最终的html选择非常强大。

  1. 超过600个选项正在显示,IMHO,这是很多显示给用户。也许有人可以给我举一个更容易管理的时区列表的例子?也许你见过一个做时区选择的网站?我确信超过600的选项是“技术上”正确的,但这将只是看上去像噪音的用户。
  2. 时区的显示值为to long。

例如。科技委中央标准时间(南澳大利亚/新南威尔士)9.5:30.0

只要"CST,中央标准时间“或”澳大利亚/破碎山“就更好了

有没有办法通过某种标记属性(在文档中找不到任何标记属性)或配置来解决这些问题?

或者,我最好的选择是将html select封装在一个自定义标记库中,并“滚动我自己的”解决方案(Id不喜欢)。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-05-28 07:32:46

查看源代码,就无法覆盖"optionValue“属性,因为它是在taglib方法本身中设置的。

所以我想你得自己滚-

原始标记的源在这里。应该是一个很好的起点。你可能需要这样的东西:

代码语言:javascript
复制
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)
    }
}

然后你就可以:

代码语言:javascript
复制
<my:tzSelect/>
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2927162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档