В нашем веб-приложении мы провели некоторый рефакторинг для Java-бинов, и из-за этого рефакторинга некоторые действия / получатели больше не доступны. Например, в следующем примере:
public class MyBean implements Serializable {
// Old name
// public String getFoo() { return "foo"; }
// New name
public String getBar() { return "bar"; }
}
Если мой код JSF по-прежнему выглядит так:
<h:inputText value="#{myBean.foo}" .../>
тогда будет сгенерировано исключение.
Мое главное беспокойство заключается в том, что некоторые выражения EL могут теперь указывать на несуществующие методы в Java-бине, и я вижу это только при просмотре соответствующей страницы. Сложнее становится, когда выражение EL находится в части, которая отображается в определенных условиях и / или воспроизводится Ajax.
Итак, мой вопрос: как я могу статически проверить правильность этих выражений EL?
Я проверил инструмент JSFUnit , поскольку он предоставляет такую утилиту. Поэтому я попробовал этот пример , но, похоже, он работает не так, как ожидалось. На простой тестовой странице, с несколькими выражениями EL (некоторые правильные, другие неправильные с несуществующими компонентами и / или методами), тест завершается успешно, что неверно.
Действительно важное замечание: мои бины определены в моей конфигурации Spring, а не в faces-config.xml
.
Также обратите внимание, что мне просто нужно проверить, относится ли выражение EL к существующему компоненту и методу, и необязательно, что это действие будет выполнено правильно ...
Техническая информация:
Java 1.6, Spring 2.5, JSF 1.2, EL Functor , Facelets и Richfaces 3.3