2011-04-18 6 views
9

<h:selectBooleanCheckbox value="#{someBean.prop}">인데 propint의 속성입니다. 그것은 정말로 일하지 않고 있습니까? Booleanint으로 변환하는 사용자 지정 변환기를 구현해야합니까? 누구든지 주식에 대한 컨버터 코드를 가지고 있습니까? <h:selectBooleanCheckbox>의 변환기가 처리되지 못하도록하는 JSF 2.0의 버그가 있음을 읽었습니다. 누구나 확인할 수 있습니까?바인드 h : selectBooleanCheckbox 값이 부울/부울 대신 정수/부울

나는 그 이름이 말하듯이, 토마 호크와 톰캣 6

답변

23

<h:selectBooleanCheckbox>가하는 boolean 또는 Boolean 속성에 바인딩되어야에서 MyFaces를 사용합니다. 다른 건 없어. converter 특성을 허용하는 것은 실제로는 bug in the spec입니다. 결코 그것을 허용해서는 안됩니다.

모델에 문제가 더 많습니다. int을 사용하여 부울 상태를 나타내는 이유는 무엇입니까? 모델이 완전히 변경 될 수 있도록 boolean으로 변경하십시오.

을 다음과 같이

모델을 변경하면 어떤 이유로 옵션 (제 3 자 API, 바보 건축가, 또는 바보 업무 제한 등)이 아닌 경우

은 다음 백업 빈의 모델 게터/세터를 포장
public boolean isChecked() { 
    return someModel.getSomeInt() != 0; 
} 

public void setChecked(boolean checked) { 
    someModel.setSomeInt(checked ? 1 : 0); 
} 

대신 <h:selectBooleanCheckbox value="#{bean.checked}" />으로 사용하십시오.

+0

감사합니다. 모델이 내 것이 아니므로 래퍼 메서드를 사용합니다. – geeehhdaa

+1

스팸으로 간주 될 수 있지만 Balus 나는 당신을 사랑합니다. 나는 같은 문제가있어 사용자 지정 변환기를 제공했지만 트리거되지는 않습니다. 시간을 엄청나게 절약 했어. 감사! – onigunn

+3

@asrijaal : 오신 것을 환영합니다.하지만 이미 결혼 하셔서 미안합니다. – BalusC

2

그냥 MySQL이 필드 유형 선택으로 부울을 가지지 않는다는 것을 말하면서,이 필요성의 예가 될 수 있습니다.

+3

난 그냥 비즈니스 측면보다는 지속성/모델 측면에서 그것을 해결할 수 있습니다. JDBC의 경우, 예를 들어'model.setSomeBoolean (resultSet.getInt (columnname)! = 0)'등의 작업을 수행합니다. JPA에 사용자 정의 맵핑 유형을 작성할 수있는 경우. – BalusC

관련 문제