Русский English Тэги View Sergey Zolotaryov's profile on LinkedIn Вход
За что я не люблю JSF
Постоянная ссылка 18-10-2007 anydoby java

Эта статья будет регулярно обновляться каждый раз, когда я буду находить очередной глюч или фичу в JSF, а именно в мейнстримовой реализации MyFaces.

Первый пункт:

Вы когда-нибудь видели вот такую ошибку?


java.lang.IllegalStateException: parent is null?
        at javax.faces.webapp.UIComponentTag.findComponent(UIComponentTag.java:545)
        at javax.faces.webapp.UIComponentTag.doStartTag(UIComponentTag.java:315)
.....................................
Какого черта это может означать? В зависимости от превратностей судьбы это может быть либо непойманная ошибка в вашем backing bean, или же ошибка в JSP, никто точно не скажет, так как MyFaces проглатывает изначальную ошибку, и остается только гадать на кофейной гуще. Решением может оказаться отладка кода вашего бина и нахождение места, в котором ошибка бросается. Если вам кажется, что ошибка в JSP, тогда самым простым выходом будет откатиться до ранее работавшей версии и затем строка за строкой добавлять компоненты к странице, и проверяя "подозрительные" участки кода.

Пункт второй:

Отсутствует логирование. Вернее, отсутствует осмысленное логирование, логи, которые пишет MyFaces, могут быть полезными только для разработчиков этого продукта.

Простой пример: вы создали страницу с формой, пара полей и кнопка - вы нажимаете на кнопку и все работает замечательно. Вы счастливы. Потом вам нужно добавить несколько полей и каку-нибудь логику к бину. Добавляем поле, добавляем логику, нажимаем на кнопку ... и ничего не происходит. Текущая страница просто перерисовывается, метод в бине не вызывается, а в логе нет ничего о причине такого поведения. Максимум, что можно вытащить из лога, это прохождение всех фаз запроса и выход после рендеринга, который, собственно, можно посмотреть и в браузере.

дальше больше...

Добавить комментарий

Предыдущая статья Сортировка и постраничная разбивка больших таблиц в JSF Следующая статья org.apache.openjpa.persistence.ArgumentException при миграции с EJB на Spring