JSF: возможно ли создать собственный конвертер для этого

Я использую JSF 2.0, кстати
У меня есть атрибут X типа Integer, который имеет значение по умолчанию 0. На моей странице JSF я создаю компонент, который я хочу отключить, если X равен 0, и включить в противном случае.

<h:selectBooleanCheckbox disabled="#{X}"/>

и я получил эту ошибку

Cannot convert 0 of type class java.lang.Integer to class java.lang.Boolean

person Thang Pham    schedule 17.08.2010    source источник
comment
Я не понимаю, что вы подразумеваете под типом сущности Interger   -  person Bozho    schedule 18.08.2010
comment
ммм, атрибут X типа Integer, вот что я имею в виду   -  person Thang Pham    schedule 18.08.2010


Ответы (1)


Ваш вопрос довольно расплывчатый и двусмысленный. Я не вижу, как конвертер полезен здесь. Преобразователь предназначен только для преобразования между нестандартным типом и типом String (стандартные типы, для которых EL имеет встроенные преобразования (приведения), являются примитивами, Number и Boolean). Кроме того, я думаю, что вы на самом деле имели в виду «рендеринг в дереве компонентов», когда говорили «отключено» и «включено».

В орехе, вы в основном хотите <h:someComponent rendered="#{X != 0}" />.

Ты не можешь просто сделать это?

person BalusC    schedule 17.08.2010
comment
Также; несколько компонентов отключили атрибут, используемый таким же образом. Однако я бы предложил сохранить логическую переменную для включения/отключения: <h:commandButton disabled="#{not entityBean.enabledButton}" /> - person Tormod; 18.08.2010
comment
Компоненты, представляющие элементы формы HTML, действительно имеют это. Но это не было настолько очевидным из вопроса. - person BalusC; 18.08.2010
comment
Извините, я не знал, что вы можете сделать это так, у меня изначально это было как rendered=#{X} и я надеялся, что оно будет вести себя как C, где любой 0 является ложным, и истинным в противном случае. Но он выдает мне ошибку, говорит, что не может преобразовать 0 в логический тип, поэтому я подумал, что мне нужен какой-то пользовательский преобразователь. Теперь все отлично работает, большое спасибо - person Thang Pham; 18.08.2010
comment
Пожалуйста. Другие примеры логических выражений в EL см. в этом ответе< /а>. - person BalusC; 18.08.2010