2011-11-04 3 views
3

실패 (A CompundPropertyModel를 사용하여 날짜 속성 유형 java.util.Date이다) :Wiquery DatePicker에서 시간 표시, 유효성 검사가 나는 개찰 페이지에 다음 코드에서 Wiquery DatePicker에서 문제에 봉착

DatePicker<Date> datePicker = new DatePicker<Date>("date"){ 
    @Override 
    public boolean isVisible() { 
     return selectedType.hasDate(); 
    } 
}; 
datePicker.setDateFormat(DateUtil.DATE_PATTERN); // pattern is "dd.MM.yyyy" 
form.add(datePicker); 

html로이은에 바인딩 :

<input wicket:id="date" id="date"/> 

문제 기존 데이터를 편집 할 때, 입력 필드는 날짜와 함께 시간을 표시하고 양식을 제출 때이 맞지 않기 때문에, 검증이 실패한다는 것입니다 무늬.

DatePicker에서 현재 값을 올바르게 표시하려면 어떻게해야합니까?

답변

1

이것은 비교적 모호한 Wiquery DatePicker 구성 요소의 버그 인 것 같습니다. 이 문제가없는 org.apache.wicket.extensions.yui.calendar.DatePicker으로 전환했습니다.

+0

당신이 JQuery와 네이티브 DatePicker에서를 ['setDateFormat' (사용 해봤 java.sql.Date 클래스 컨버터 조심 http://docs.jquery.com/UI/Datepicker# option-dateFormat) 메소드? 기본 dateFormat은'mm/dd/yy' 인 것으로 보입니다. 기본 설정이 제대로 작동합니까? –

+0

@Xavi : 기존 데이터가 표시 될 때만 나타납니다. 사용자가 필드를 조작 할 때까지 jQuery datepicker가 전혀 관련되어 있지 않다고 생각하기 때문에 문제는 JavaScript 수준에서 발생한다고 생각하지 않습니다. –

+0

나는 이것을 WiQuery 1.2.4 및 Wicket 1.4.7 빠른 시작에서 사용해 보았습니다. 초기 값은'setDateFormat()'에 따라 형식화되지 않은 것 같습니다. 기본 'mm/dd/yy /'형식으로 나타납니다. 그러나 시간이 표시되지 않습니다. –

1

은 왜 그 convertToObjectdd.MM.yyyy를 반환하도록에서 사용자 지정 IConverter를 사용 DatePicker 부품 A TextField 인?

sources은 등록 된 IConverter 또는 다른 방법으로 입력을 변환 할 수 없으므로이 구성 요소의 입력 형식이 무엇이든간에 충돌합니다.

는 UPDATE

WiQuery 1.2.4 및 개찰 1.4.17을 사용하여 빠른이 디버깅 한 결과, (a TextField 임) DatePicker의 초기 값 Component.getDefaultModelObjectAsString()에 의해 수행되는 표준 변환임을 나타낸다 .

TextFieldIModel<Date>이므로 Date 클래스에 등록 된 번호는 IConverter입니다. 귀하의 경우 그것은 시간과 함께 서식을 지정하는 사용자 정의 IConverter을 사용 중일 수 있습니다. DatePickergetConverter()을 무시하고 setDateFormat()에 지정된 형식을 따르는 SimpleDateFormat을 사용하려고합니다.

이 문제는 DatePicker와 함께 지정해야한다는 IConverter에 대한 힌트를 제공합니다 Issue 168: Invalid (or uncommon) date format for NL in DatePicker

또한 유용 개찰구 사용자에 대한이 토론 목록을 찾을 수 있습니다 : DatePicker to pick a year.

내가 의 재정과 (당신이 당신의 개찰구 텍스트 필드에 적합한 컨버터를 설정해야합니다 생각 : 줄리앙 로슈 (프로젝트의 소유자 중 하나) setDateFormat는 jQuery로 클라이언트 측에서 작동이 상태 getConverter 메서드와 PatternDateConvert 클래스). "dateFormat"옵션은 jQuery와 함께 클라이언트 측 에서만 작동합니다.

+0

희망적으로, 이것은 Wiquery 사용을 이미 결정한 사람들에게 유용 할 것입니다. 그러나 프로젝트는 이미 다른 곳에서 Wicket 확장 DatePicker를 사용하고 있었고 우연히 Wiquery를 사용하고있었습니다. –

0

은 먼저 당신이 그래서 정비사에서 텍스트 개체를 변환하는 개찰구를 알고 https://cwiki.apache.org/WICKET/using-custom-converters.html

을 살펴 ..모두 당신이해야 할 일

응용 프로그램 클래스에서 newConverterLocator() 메서드를 재정 의하여 사용자 지정 ConverterLocator를 제공하십시오.

protected IConverterLocator newConverterLocator() { 
    ConverterLocator converterLocator = new ConverterLocator(); 
    converterLocator.set(Date.class, new DateConverter()); 
    return converterLocator; 
} 

팁 :

관련 문제