2013-11-26 2 views
0

설정을 무시 : Primefaces 3.4.2, JSF2Primefaces 입력 빈 문자열을

을 나는 4 개의 입력을 가진 형태의 게시물 데이터 것은 위해 onblur가 트리거 될 때 필드가 있습니다.

설명 4 개의 입력 필드 모두에 값을 넣었으므로 제대로 작동합니다. 그런 다음 값을 하나씩 제거하기 시작합니다. BigDecimalConverters가있는 모든 필드에 대해 값을 제거 할 수 없습니다. 필드를 떠나 즉시 다음 값으로 제거하기 시작하면 값이 필드로 반환됩니다.

IE 및 Chrome 용 개발자 도구에서 네트워크 탭을 사용했는데 게시물이 빈 값을 보낸 다음 해당 필드에 다른 숫자가 있어야한다는 응답이 표시됩니다.

이 문제가 발생할 수있는 사람은 누구입니까?

+0

당신은 당신의 코드 조각을 제공 할 수 있습니까? 관련 뷰 페이지와 관리되는 빈 코드, 그것없이 괜찮은 대답을 제공하는 것은 불가능합니다. –

+0

나는 그것을 할 수 없어 두렵다. 거대한 레거시 시스템의 일부로, 자바 코드에서 서버 사이드의 거의 모든 구성 요소를 생성하도록되어있는 것처럼하는 것을 좋아하지 않습니다. 그러나 입력 사이에 다른 유일한 것은 IntegerConverter와 BigDecimalConverter라는 것을 알 수 있습니다. 그래서 누군가가 비슷한 문제를 겪었 으면합니다. – unzoomed

+0

숫자는 '198.23'입니까? – kolossus

답변

2

당신이 겪고있는 문제는 다음으로 요약된다 :

BigDecimal bg = new BigDecimal(""); 

위의 라인은 java.lang.NumberFormatException가 발생되는 것이다 변환 오류에 차례 결과입니다. 필드가 유효성 검사/변환에 실패했기 때문에 필드 값이 유지되는 이유입니다.

기본적으로 공백은 null로 서버에 전송되지 않습니다. 빈 문자열로 제출됩니다. 이 동작은 웹 컨텍스트 javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULLweb.xml에서 true으로 설정하여 사용자 정의 할 수 있습니다. 이로 인해 빈 필드는 null으로 전송되고 변환 오류는 트리거되지 않습니다.

관련 :

+1

이것은 내가 (수많은) 환경에서 그것을 어떻게 해결했는지를 보여줍니다. 빈 문자열을 올바른 값으로 제출하면 문제를 해결할 수 있습니다. 그렇지 않은 경우 일부 코드를 표시하십시오. –

관련 문제