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

У меня есть простая HTML-страница 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">

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

Вот ошибка:

javax.faces.FacesException: java.lang.NullPointerException: serialFactory в org.apache.myfaces.shared_impl.context.ExceptionHandlerImpl.wrap(ExceptionHandlerImpl.java:241) в org.apache.myfaces.shared_mpl.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.alve.alve.alve.jalve.jalve.alve.alve.j) ..apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) в org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) в org.apache.catalina.inkeVase.core..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.jve:g:.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) в org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002) в org.apache.coyote.AcessstractPro тивный протокол $.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.getAsByteArray(StateUtils.java:268) в org.apache.myfaces.shared_impl.util.StateUtils.construct(StateUtils.java:235) в org.apache,.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 (ViewHandlerWapg.g) ..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(FaceletView20.jj) (FaceletView20.jj) в org.apache.myfaces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:263) в javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:59) в javax.faces.application.ViewHandlerWrapper.jlerWView: 59) в org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:85) в org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:239) ... и еще 17

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

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

1 ответ

Решение

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

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

Другие вопросы по тегам