JSF вынес вопрос - PullRequest
       13

JSF вынес вопрос

5 голосов
/ 11 мая 2011

Действительно ли EL-разбор дочерних элементов для элементов с rendered = "false" действительно должен оцениваться?Это вызывает у меня много проблем с исключениями нулевого указателя и тому подобным.Рассмотрим следующий пример:

<p:tab title="#{userCompetenceController.getTreeName(3)}" rendered="#{!empty userCompetenceController.getTreeName(3)}">
  <xdin:competenceTable id="competenceBox3"
                        profile="#{userCompetenceController.selectedProfile}"
                        tree="#{userCompetenceController.getCompetenceTree(3)}"
                        maxHeight="500px"/>
</p:tab>

Основная проблема (помимо производительности) заключается в том, что xdin:competenceTable не поддерживает нулевой tree -атрибут.getTreeName(int index) возвращает ноль в этом случае, после чего следует вызов getCompetenceTree(3), который возвращает ноль, даже если его родитель (p:tab) имеет rendered="false"

Короче: xdin:competenceTable анализируетсяEL, хотя его родитель имеет rendered="false".Почему?

1 Ответ

3 голосов
/ 11 мая 2011

Посмотрите на спасательный круг JSF ниже.

Рендеринг является только последней фазой, а rendered="false" влияет только на эту последнюю фазу, в то время как ошибки в построении компонента происходят в первой.

Не визуализированные компоненты должны фактически ничего не делать на всех этапах, но похоже, что ваш компонент не соответствует этой части спецификации.

enter image description here

...