2012-01-14 2 views
1

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

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

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

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

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

+0

Показать код для MyBean class – Xorty

+0

Моя точка зрения - не глядя на класс - есть ли способ заставить Mojarra выплюнуть ошибки, которые он имеет, пытаясь решить проблемы el. – hawkeye

+0

Я понимаю сейчас. Все в порядке, но после нажатия ссылки вы получите что-то вроде PropertyNotFoundException, потому что такого компонента не существует. И вы пытаетесь предотвратить неразрешенные бобы. – Xorty

ответ

1

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

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

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

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

Смежные вопросы