Подтвердить что ты не робот

Как отлаживать JSF/EL

Как отладить EL на странице JSF? Я бы хотел просмотреть значения переменных, вызовы функций и так далее. Лучшим решением будет плагин eclipse, но любая другая возможность лучше, чем угадать: "Почему это выражение не получилось правильно?".

4b9b3361

Ответ 1

Ближе всего, что вы можете получить в JSF/Facelets, размещайте <ui:debug /> где-то в представлении:

<ui:debug />

При нажатии Ctrl Shift D следует отобразить всплывающее окно с отладочной информацией о дереве компонентов и всеми доступными параметрами запроса и переменными области запроса/просмотра/флэш/сеанса/приложения. Это в основном представление содержимого всех этих карт.

Горячая клавиша, кстати, настраивается атрибутом hotkey, чтобы вы могли выбирать другую, когда она сталкивается с горячими клавишами браузера по умолчанию, как это было бы в Firefox; Ctrl Shift D по умолчанию будет отображать диалог "Добавить закладки". Здесь, как вы могли бы заставить его слушать Ctrl Shift X вместо этого:

<ui:debug hotkey="x" />

Вы также хотели бы скрыть его на стадии не-разработки, поэтому добавьте визуализированное условие следующим образом:

<ui:debug hotkey="x" rendered="#{facesContext.application.projectStage == 'Development'}" />

В показанной отладочной информации информация о переменных с областью не так велика, как вы ожидали. Он показывает только результат Object#toString() всех переменных, которые по умолчанию равны [email protected]. Вы не можете напрямую изучить их свойства и значения своих свойств так же, как в отладочном представлении отладчика Eclipse. Вам нужно будет реализовать toString() в классе соответственно, чтобы возвращать как можно больше релевантную информацию (при необходимости вы даже можете позволить Eclipse автоматически генерировать его по исходному коду rightclick > Source > Generate toString()):

@Override
public String toString() {
    return String.format("Bean[prop1=%s,prop2=%s,prop3=%s]", prop1, prop2, prop3);
}

Что касается вызовов метода, просто поместите точку останова на исходный код Java обычным способом. Eclipse также будет атаковать, когда EL вызывает метод. Если это управляемый bean, вы также просто увидите его свойства в отладчике Eclipse.

Ответ 2

Если у вас действительно проблемы, если вы можете получить источник для реализации EL (достаточно простой для RI), вы можете использовать Eclipse для установки контрольных точек в методах реализации EL. Вам нужно понять, как работает код EL, но это не так сложно. Не для очень слабых, хотя.

Еще одна возможность - создать и оценить EL программно. Есть примеры того, как это сделать. Затем вы можете использовать отладчик, чтобы возиться с тем, что такое выражение, и каков результат, пока вы не разработали, где находится ваша проблема.