簡體   English   中英

使用Grails g:timeZoneSelect標簽?

[英]Working with the Grails g:timeZoneSelect tag?

我想在我的應用程序中使用g:timeZoneSelect標記,問題是我發現生成的html選擇相當不堪重負。

  1. 顯示了600多個選項,恕我直言,這對用戶來說太多了。 也許有人可以指出一個時區列表更易於管理的示例? 也許您看過一個時區選擇很好的網站? 我確信超過600個選項在技術上是正確的,但是對於用戶而言這就像是噪音。

  2. 時區的顯示值過長。

例如:“ 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/>

ils子

[英]Grails <g:set tag in javascript

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM