MyFaces 2.0.4 не может отображать тег h: form

У меня есть простая страница xhtml JSF 2.0, которая не будет отображаться, когда я вставлю тег h: form. Я могу использовать обычный тег, и все отображается просто отлично.

Вот мои характеристики: - Java 1.6 - WebSphere 8.0.0.5 и его встроенный Apache MyFaces 2.0.4 - PrimeFaces 3.4.2 - OmniFaces 1.3 - Мне нужно поддерживать теги HTML 5, поэтому я использую

Вот простая тестовая страница:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:h="http://java.sun.com/jsf/html">
<h:head>
    <title>This is a test page</title>
</h:head>
<h:body>

    <h:form></h:form>
</h:body>
</html>

Я также протестировал эту тестовую страницу с использованием NetBeans и Tomcat 7 с MyFaces 2.0.4, указанным в качестве зависимости, и зависимостями PrimeFaces и OmniFaces, удаленными из моего pom, чтобы убедиться, что ни одна из них не вызывает проблему. Страница по-прежнему не отображается.

Обратите внимание, что изменение DOCTYPE на обычное:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

тоже не работает.

Вот ошибка:

Я заметил, что проблема была исправлена ​​в MyFaces 2.0.6. Проблема в том, что я привязан к WAS v8 MyFaces 2.0.4. Мне нужно использовать встроенный CDI WAS v8, чтобы я мог объединить его с EJB 3.1. Вы можете использовать встроенный CDI только со встроенными MyFaces (так сказано в руководстве WAS v8).

Любые предложения по обходному пути? Могу ли я вместо этого использовать простой тег <form>? Я не вижу никаких ошибок MyFaces, когда использую тег <form>.

Оказывается, виновником был OmniFaces 1.3. BalusC включил эту ошибку в Вики-страница известных проблем OmniFaces.


person Chris Harris    schedule 01.02.2013    source источник
comment
2.1 должно быть еще лучше. 2.1.10 можно найти в репозитории maven.   -  person lu4242    schedule 02.02.2013
comment
Что ж, если бы я действительно мог использовать последнюю версию MyFaces 2.0/2.1, я бы так и сделал. Черт возьми, я использовал JSf 2.2 Mojarra для POC приложения. Я не могу обновить, хотя. Я застрял, используя WebSphere v8.0.5. Если я хочу воспользоваться преимуществами CDI JEE 6, вы должны использовать встроенный в WAS 8 MyFaces 2.0.4. Да, я могу переопределить версию 2.0.4, установив для политики загрузчика классов значение PARENT_LAST или Shared Library, но я потеряю преимущества возможности использования CDI. В WAS v8 это их реализация CDI или ничего. Вы не можете переопределить это. Я не использую JSF 2.0 без использования CDI в сочетании с EJB 3.1 и JPA 2.   -  person Karl Kildén    schedule 02.02.2013
comment
Исправление, я использую WAS v8.0.0.5. Я также хотел бы добавить, что добавление обычного тега _1_ не является подходящим обходным путем. Хотя компилятор не будет жаловаться на существование этого тега, JSF во время выполнения выдаст предупреждающее сообщение о том, что требуется форма JSF. Я пытаюсь найти обходной путь для этой проблемы. Одним из спасений является то, что WAS v8.0.0.6 выходит в апреле, хотя на данный момент это не приносит мне никакой пользы.   -  person Chris Harris    schedule 02.02.2013
comment
Тьфу, ничего из того, что я пытаюсь, пока не работает. Я наткнулся на этот пост: ссылка и этот пост: ссылка. Я попытался реализовать код, указанный в вики MyFaces, после установки моего javax.faces.STATE_SAVING_METHOD с сервера на клиент. Я добавил зависимости jboss-serialization и trove, а также классы. Затем я добавил контекст-параметр web.xml org.apache.myfaces.SERIAL_FACTORY и установил его в JBossSerialFactory (как он находится в структуре моего пакета). Не повезло   -  person Chris Harris    schedule 05.02.2013
comment
WAS v8.0 имеет характерное для IBM имя ключа параметра контекста web.xml MyFaces для org.apache.myfaces.SERIAL_FACTORY. Я проконсультировался по ссылка. @Inject Сарказм сарказм; Вау... спасибо, IBM! Большое спасибо за выбор MyFaces 2.0.4...   -  person Chris Harris    schedule 05.02.2013
comment
Я должен указать, что не повезло, я имею в виду, что переопределяющий класс JBossSerialFactory даже не вызывается. Я установил точку останова отладки в RAD, и этот класс ни разу не вызывался при рендеринге страницы.   -  person Chris Harris    schedule 05.02.2013
comment
В ПОРЯДКЕ. Я должен извиниться перед IBM (хотя MyFaces 2.0.6 был бы лучше). Оказывается, виновником был OmniFaces v1.3. Я решил попробовать повторно добавить зависимости PrimeFaces и OmniFaces обратно в тестовое приложение NetBeans 7.2/Tomcat 7. Индексная страница приложения не загружалась из-за ошибки serialFactory. Я удалил OmniFaces, и страница загрузилась. Я промыл и повторил этот процесс 3 раза, чтобы убедиться, что результаты постоянно воспроизводятся. Затем я смог воспроизвести проблему, используя громоздкий RAD/WAS v8.0.0.5. Я пробовал OmniFaces 1.1, 1.2, 1.3. Решит ли OmniFaces 1.4 эту проблему @BalusC?   -  person Chris Harris    schedule 05.02.2013
comment
Разве вы не можете просто связать JSF в _1_ веб-приложения и установить политику загрузки классов WAS на модуль или PARENT_LAST (в зависимости от версии WAS)?   -  person Chris Harris    schedule 06.02.2013


Ответы (1)


Это позор. Я использовал OmniFaces для условной загрузки скриптов html5.js для IE6-8. Похоже, я буду ждать WAS v8.0.0.6 до апреля.

Пожалуйста, используйте обновленную версию MyFaces. Последняя версия (2.0.16/2.1.11) на данный момент считается самой стабильной.

person Chris Harris    schedule 05.02.2013
comment
Да, я могу это сделать (я делаю это в WAS v6.1), но с оговоркой, что я теряю возможность использовать CDI WAS 8. - person BalusC; 06.02.2013
comment
Не используется для отправки комментариев при нажатии кнопки Enter... Ссылка 1 – для использования с CDI поддерживается только реализация JSF по умолчанию (на основе MyFaces). Ссылка 2 — ознакомьтесь со аннотацией "Как избежать проблем" внизу. - person Chris Harris; 07.02.2013
comment
Ссылка 3 Ссылка 4 Это позор. В любом случае, очень приятно познакомиться с вами, кстати, после прочтения стольких ваших постов, правок и комментариев за эти годы. Спасибо за ОмниФейс! - person Chris Harris; 07.02.2013
comment
javax.faces.FacesException: java.lang.NullPointerException: serialFactory в org.apache.myfaces.shared_impl.context.ExceptionHandlerImpl.wrap(ExceptionHandlerImpl.java:241) в org.apache.myfaces.shared_impl.context.ExceptionHandlerImpl.handle(ExceptionHandlerImpl .java:156) в org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:258) в javax.faces.webapp.FacesServlet.service(FacesServlet.java:191) в org.apache.catalina.core. ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) в org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) в org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) в org .apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) в org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) в org.apache.catalina.core.StandardHostValve.invoke(StandardHost Valve.java:168) на org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) на org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) на org.apache.catalina .core.StandardEngineValve.invoke(StandardEngineValve.java:118) в org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) в org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002 ) в org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585) в org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1813) в java.util.concurrent. ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) в java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) в java.lang.Thread.run(Thread.java:722) Вызвано: java.lang .NullPointerException: serialFactory на org.apache.myfaces.shared_impl.util.StateUtils.ge tAsByteArray(StateUtils.java:268) в org.apache.myfaces.shared_impl.util.StateUtils.construct(StateUtils.java:235) в org.apache.myfaces.renderkit.html.HtmlResponseStateManager.writeViewStateField(HtmlResponseStateManager.java:120) в org.apache.myfaces.renderkit.html.HtmlResponseStateManager.writeState(HtmlResponseStateManager.java:111) в javax.faces.render.ResponseStateManager.writeState(ResponseStateManager.java:67) в org.apache.myfaces.application.jsp. JspStateManagerImpl.writeState(JspStateManagerImpl.java:598) в javax.faces.application.StateManager.writeState(StateManager.java:200) в org.apache.myfaces.application.ViewHandlerImpl.writeState(ViewHandlerImpl.java:302) в javax.faces .application.ViewHandlerWrapper.writeState(ViewHandlerWrapper.java:65) в javax.faces.application.ViewHandlerWrapper.writeState(ViewHandlerWrapper.java:65) в org.apache.myfaces.shared_impl.renderkit.html.HtmlFormRendererBase.encodeEnd(HtmlFormRendererBase.java :179) в javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:519) в javax.faces.component.UIComponent.encodeAll(UIComponent.java:626) в javax.faces.component.UIComponent.encodeAll(UIComponent. java:622) в javax.faces.component.UIComponent.encodeAll(UIComponent.java:622) в org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.renderView(FaceletViewDeclarationLanguage.java:1320) в org.apache.myfaces.appli cation.ViewHandlerImpl.renderView(ViewHandlerImpl.java:263) в javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:59) в javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:59) в org.apache .myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:85) в org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:239) ... еще 17 - person Chris Harris; 07.02.2013