JSF el не разрешается - PullRequest
       35

JSF el не разрешается

1 голос
/ 14 января 2012

У меня есть следующая строка на странице JSF:

<h:commandLink action="#{myBean.test}" value="Wizard Step"></h:commandLink>

Я ожидаю, что при загрузке страницы будет создан экземпляр Бина, соответствующего myBean (и я смогу увидеть это вотладчик затмения).

Остальная часть JSF работает правильно, но этот компонент не разрешается (без каких-либо ошибок).

Как я могу получить сообщения об ошибках, которые не удается обработать компонентом?

1 Ответ

1 голос
/ 14 января 2012

Если есть ошибки EL, вы обязательно получите исключение из javax.el package :

  • ELException: представляет собой любое из условий исключения, которые могут возникнуть во время вычисления выражения.
  • MethodNotFoundException: выдается, когда метод не может быть найден при оценке MethodExpression.
  • PropertyNotFoundException: выдается, когда свойство не может быть найдено при оценке ValueExpression или MethodExpression.
  • PropertyNotWritableException: генерируется, когда свойство не может быть записано при установке значения в ValueExpression.

В вашем случае управляемый компонент не создается по первоначальному запросу. Это может означать только то, что на управляемый компонент не ссылаются в других местах представления. Атрибут EL in action оценивается только при отправке формы. Таким образом, бин будет создан только тогда, когда будет вызвано действие. В качестве теста просто поместите #{myBean} где-нибудь в поле зрения. Вы увидите, что он создается по первому запросу.

Ваша реальная проблема в том, что действие кнопки команды просто не вызывается , поэтому EL в его атрибуте действия просто вообще не оценивается. Проблема не может быть отлажена или зафиксирована на стороне EL. Существует множество возможных причин, по которым действие кнопки не вызывается. Вы можете найти их все здесь: commandButton / commandLink / ajax action / listener метод не вызван или входное значение не обновлено . Наиболее распространенная причина среди начинающих заключается в том, что кнопка находится внутри повторяющегося компонента, такого как <h:dataTable>, значение которого не сохраняется должным образом и возвращает совершенно другое значение во время запроса отправки формы, или что компонент или один из его компонентов имеет rendered атрибут, который не сохранен должным образом и по умолчанию false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...