2010-05-28 4 views
0

Я хочу использовать тег g:timeZoneSelect в своем приложении, проблема заключается в том, что результат поиска html будет довольно подавляющим.Работа с Grails g: timeZoneВыбрать тег?

  1. Отображается более 600 опций, IMHO - это много для отображения пользователю. Может быть, кто-то может указать мне на пример более удобного списка часовых поясов? Может быть, вы видели сайт, который хорошо подходит для выбора часового пояса? Я уверен, что более 600 вариантов «технически» правильны, но это будет выглядеть как шум для пользователя.

  2. Отображаемое значение часового пояса - длинное.

E.g. "CST, Central Standard Time (Южная Австралия/Новый Южный Уэльс) 9,5: 30,0"

Просто "CST, Central Standard Time" или "Австралия/Broken_Hill" было бы лучше

Есть ли способ для решения этих проблемы с помощью атрибутов тегов какого-либо типа (не найти в документах) или config, о которых я не знаю?

Или, это моя лучшая ставка, чтобы обернуть html-выбор внутри пользовательского тега lib и «рулить мое собственное» решение (Id предпочитает не делать).

Благодаря

ответ

5

Посмотрев на источник, нет никакого способа, чтобы переопределить атрибут «OptionValue», как это установлено в методе TagLib сам

Так что я думаю, вы должны были бы свернуть свой . собственный :-(

source for the original tag is here, которая должна быть хорошей отправной точкой вы, вероятно, нужно что-то вроде этого:

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) 
    } 
} 

Тогда вы совместно uld do:

<my:tzSelect/> 
Смежные вопросы