Подклассы и JSF EL - PullRequest
       23

Подклассы и JSF EL

1 голос
/ 24 февраля 2012

У меня есть класс и подклассы, которые его расширяют. Как это:

 @Table
    @Entity
    class Cat{



    class DomesticCat extends Cat{
       String litterBox;

    //getter and setters


    }

    class TigerCat extends Cat{
       String huntingStyle;

    //getter and setters
    }


}

У меня есть List<Cat> cats в моем контроллере. я заполнил это как

cats.add(new DomesticCat());
cats.add(new TigerCat());

Здесь я хочу написать вот что вот так на моей странице xhtml

<ui:repeat var="cat" value="#{controller.cats}">
<outputText rendered="tried some control here, did not work" value="cat.litterBox"/>
</ui:repeat>

Я получаю "Исключение не найдено".

возможно ли это?

EDIT

Неправильный вопрос, извините, Что вы посоветуете мне сделать, чтобы использовать подклассы расширения и JSF вместе.

Ответы [ 2 ]

1 голос
/ 24 февраля 2012

Когда язык выражений пытается разрешить свойство litterBox в экземпляре TigerCat, он выдаст исключение.

См. Документацию по BeanELResolver в спецификации EL :

getValue(ELContext, Object, Object)

другая документация исключена ...

Если объект не найден или не найдендля чтения, генерируется исключение PropertyNotFoundException.

Это ожидаемое поведение.

0 голосов
/ 24 февраля 2012

Да, это возможно, и это правильное поведение.

Как бы анализатор EL мог разрешить litterBox в 'TigerCat'?Если в список добавлены и TigerCat, и DomesticCat cats, при попадании в ваш TigerCat будет сгенерировано исключение.

Если вы добавите собаку в список с кошками и укажите значение = "dog.bark"разве вы не ожидаете такого же поведения?

...