2010-08-20 2 views
0

Grails 1.3.4를 사용하는 질문 - 'scale'제약이 내 소수를 유지하지 못하는 것 같습니다. 다음과 같이 정의 된 필드가 있습니다 : 부동 소수점 위도 위도 (빈 : false, 범위 : -360.0f..360.0f, 소수 : 6) Oracle 10g 필드는 다음과 같이 정의됩니다. NUMBER (10,6)Grails 'scale'십진수를 내림

만들기 또는 편집에 값을 입력하면 올바른 값이 데이터베이스에 저장됩니다. 그러나 쇼에서 올바르게 표시되지 않습니다. 10.1234567을 입력하고 업데이트하면 10.123457은 데이터베이스에 있지만 10.123은 표시에 표시됩니다.

편집하는 경우 값은 10.123으로 표시되고 수정하지 않고 업데이트하면 10.123이 데이터베이스에 저장되어 해당 필드를 절대 건드리지 않은 경우에도 10.123457이 바뀝니다.

값을 10.456789로 편집하지만 다른 필수 필드를 비워두면 오류 메시지가 표시된 편집 화면에 값이 10.457로 표시됩니다.

왜 Grails는 값을 3 자리로 연속 반올림합니까? 나는 필드를 더블로 시도했지만 같은 결과를 보였다. 아마도 Oracle이라고 생각했지만 기본 dev 데이터베이스와 같은 결과로 시도했습니다. 어쩌면 그것이 '범위'라고 생각 했겠지만, 나는 같은 결과로 그걸 제거했다.

+0

${fieldValue(bean: countryInstance, field: "latitude")} 

은 벌레처럼, 내가 티켓을 제기 할 소리. –

답변

0

snowmanjack이 제안한 해결책을 사용하여 끝내기까지 너무 많은 시간을 낭비했습니다.

fieldValue 호출과 함께 발생하는 기본 데이터 바인딩은이를 자릅니다. http://grails.org/doc/latest/guide/single.html#dataBinding

또는 내가 사용하는 게으른, 아마도 안전하지 않은 방법을 직접 할 수 있으며 속성에 직접 액세스 할 수 있습니다.

교체되었습니다.

${contryInstance.latitude} 
관련 문제