2010-05-28 5 views
0

내 응용 프로그램 내에서 g:timeZoneSelect 태그를 사용하고 싶습니다. 문제는 결과 HTML이 매우 압도적이라는 것을 발견했습니다. 이 사용자에게 표시하기 위해 더이다 이럴Grails g : timeZoneSelect 태그로 작업 하시겠습니까?

  1. 600 옵션이 표시되고있다. 어쩌면 누군가가 훨씬 더 관리하기 쉬운 시간대 목록을 보여줄 수 있습니까? 어쩌면 시간대 선택을 잘하는 사이트를 본 적이 있습니까? 600 옵션이 "기술적으로"정확하다는 것은 확실하지만 사용자에게는 잡음처럼 보일 것입니다.

  2. 시간대의 표시 값이 길어집니다.

예 : "CST, 중부 표준시 (사우스 오스트레일리아/뉴 사우스 웨일즈) 9.5 : 30.0"

그냥 "CST, 중부 표준시"또는 "호주/Broken_Hill는"

이를 해결할 수있는 방법이 있나요 더 좋을 것이다 어떤 종류의 태그 속성 (문서에서 찾을 수 없습니다) 또는 내가 모르는 구성을 통해 문제가 있습니까?

또는 사용자 정의 태그 lib 내에 html select를 래핑하고 "내 자신의 솔루션"솔루션을 사용하는 것이 가장 좋습니다 (Id는 선호하지 않음). 이 자체가

그래서 난 당신이 롤 거라고 추측 태그 라이브러리 방법에 설정되어

감사

답변

5

소스를 살펴 갖는은은 "optionValue를"속성을 재정의 할 수있는 방법은 없습니다 당신의 . 좋은 출발점이되어야한다 자신의 :-(

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/> 
관련 문제