2014-03-07 4 views
2

검색 페이지에 boolean이라는 기준이 있습니다. 필수 항목이 아니기 때문에 확인란을 사용할 수 없습니다. 건너 뛰기를 원하기 때문에 선택할 수 없습니다.JSP에서 동작으로 빈 문자열을 보내는 부울에 NULL 상태를 유지하는 방법

JSP

<s:select list = '#{ "":"Make your choice...", true:"FOO", false:"BAR" }' 
      name = "myBooleanCriterion" /> 

액션

private Boolean myBooleanCriterion; 

/* Getter and Setter */ 

우리는 falseboolean 기본값 Boolean 기본값 null에, 다음 페이지가 렌더링 처음으로, 그것을 확인하는 동안은 ("확인 것을 알고있다 당신의 선택 "가 표시됩니다). POST가 후

는 값으로 ""을 발견 한 경우에도, 그러나 스트럿츠는 Boolean 특성 ( false에 디폴트를) 인스턴스화, 그래서이 JSP로 돌아 왔을 때, 값은 false ( "BAR"에 미리 선택한다).

값이 "" 인 경우 Struts가 해당 변수의 인스턴스를 생성하지 않고 원래 그대로 두도록하려면 어떻게해야합니까? null 상태? 변환기를 만들거나 .properties 파일에 무엇인가를 지정해야합니까? 나는 (약간 사용자 정의) paramsPrepareParamsStack 인터셉터 스택을 사용하고

는 (I는 example .2 from this answer에서와 기본적으로 동일한 코드했습니다).

내가 바보 같은 것을 놓친 것처럼 느껴집니다. XWorkBasicConverterboolean -s 정확히 같은 방식으로 변환

답변

4

있기 때문에이 Boolean.valueOf() 방법을 사용하여, Boolean -s 변환, 빈 문자열 또는 nullfalse로 변환됩니다.

제출 후 null을 받으려면 Boolean에 대한 사용자 지정 변환기를 만들거나이 매개 변수를 전혀 제출하지 않아야합니다. 예 : 값이 "" 인 경우 name 속성을 자바 스크립트로 변경하십시오.

+0

답장을 보내 주셔서 감사합니다. 게시하기 전에 이미 비어있을 때 입력란에'비활성화 됨 '을 설정하고 있습니다.하지만'이름 '을 변경해도 좋습니다.이 질문에'올바른 ' 방법은 변환기를 만드는 것을 포함하지 않습니다. 명백하게, 거기 있지 않습니다 :/ –

+0

+1; 정확하게 내 질문에 대한 답변! Thx man! –