2014-11-05 3 views
0

Я развертываю приложение JSF 2 на Glassfish 3.1.2, и у меня возникла проблема визуализации содержимого страницы. Ни один из новых тегов jsf 2 не распознается.JSF 2 http://java.sun.com/jsf/html библиотека не найдена - DEFAULT_SUFFIX не работает на Glassfish 3.1.2

консоль сервера показывает эту ошибку:

2014-11-05T08:50:17.436+0100|Advertencia: StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for servlet Faces Servlet threw exception 
org.xml.sax.SAXException: PWC6143: No tag "head" defined in tag library associated with uri "http://java.sun.com/jsf/html" 
    at org.apache.jasper.compiler.JspDocumentParser.parseCustomAction(JspDocumentParser.java:1202) 
    at org.apache.jasper.compiler.JspDocumentParser.startElement(JspDocumentParser.java:448) 
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:501) 
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:400) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2747) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648) 
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737) 
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107) 
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205) 
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522) 
    at javax.xml.parsers.SAXParser.parse(SAXParser.java:395) 
    at org.apache.jasper.compiler.JspDocumentParser.parse(JspDocumentParser.java:222) 
    at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:229) 
    at org.apache.jasper.compiler.ParserController.parse(ParserController.java:145) 
    at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:212) 
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:451) 
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:625) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:473) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:377) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:770) 
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550) 
    at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:809) 
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:671) 
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:505) 
    at org.apache.catalina.core.ApplicationDispatcher.doDispatch(ApplicationDispatcher.java:476) 
    at org.apache.catalina.core.ApplicationDispatcher.dispatch(ApplicationDispatcher.java:355) 
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:305) 
    at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:546) 
    at com.sun.faces.application.view.JspViewHandlingStrategy.executePageToBuildView(JspViewHandlingStrategy.java:364) 
    at com.sun.faces.application.view.JspViewHandlingStrategy.buildView(JspViewHandlingStrategy.java:154) 
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:100) 
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) 
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) 
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) 
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161) 
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) 
    at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317) 
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195) 
    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860) 
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757) 
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056) 
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229) 
    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) 
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) 
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) 
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) 
    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) 
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) 
    at com.sun.grizzly.ContextTask.run(ContextTask.java:71) 
    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) 
    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) 
    at java.lang.Thread.run(Thread.java:619) 

Я уже проверить решения уже here и here:

  • Нет JSF реализации в моем веб-Inf/Lib
  • Web. xml-заголовок версии
  • Faces-config.xml версия заголовка
  • Мои файлы на странице. Расширение .jspx и навигация делают на * .jsf URL (для правильного использования DEFAULT_SUFFIX)

Но они не сработали.

Это моя web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="test" version="3.0"> 

<context-param> 
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name> 
    <param-value>.jspx</param-value> 
</context-param> 

<!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> 
<!-- Spring configuration --> 
<!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> 
<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/applicationContext.xml</param-value> 
</context-param> 

<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 


<!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> 
<!-- JSF configuration --> 
<!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> 
<!-- Faces Servlet --> 
<servlet> 
    <servlet-name>Faces Servlet</servlet-name> 
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>/faces/*</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.jsf</url-pattern> 
</servlet-mapping> 

Faces-config.xml:

<faces-config 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd" 
version="2.0"> 
</faces-config> 

И нет файла GlassFish-web.xml.

И наконец, ошибка исчезла, когда я удалил параметр контекста javax.faces.DEFAULT_SUFFIX из web.xml. Если я переименую файлы своей страницы в .xhtml и использую URL-адреса * .jsf в навигации, все будет хорошо.

Кажется, стеклянная рыба JSF 2 impl игнорирует параметр DEFAULT_SUFFIX, поэтому никакие другие расширения не могут использоваться для обозначения файлов страниц просмотра.

Glassfish 3.1.2 использует Mojarra 2.1.6, я обновил Mojarra до 2.2.8, но он тоже не работает.

Любая подсказка о том, как заставить DEFAULT_SUFFIX работать? Эта конфигурация работает на стеклянной платке 2.1.1.

ответ

0

Если ваши файлы страниц содержат XHTML, то вы должны имя, а затем *.xhtml. .jsf, заканчивающийся в URL, является только виртуальным отображением. Ответ на this question содержит подробную информацию о различиях.

Другим вариантом является отображение FacesServlet до нужного суффикса имени файла:

<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.jsf</url-pattern> 
</servlet-mapping> 

Вы также можете отобразить непосредственно *.xhtml, если ваши страницы файлы имеют суффикс.

Смотрите также:

+0

I Шоуда имеют mencioned вышеуказанную конфигурацию работает на Glassfish 2.1.1. Точка DEFAULT_SUFFIX позволит вам использовать другие расширения, отличающиеся друг от друга .jsp или .xhmlt (.jspx в моем случае), мы использовали этот параметр в предыдущих версиях Glassfish, но, похоже, он не работает в GF3. – kothvandir

+0

Хорошо, но у вас есть альтернативный способ указать расширение (сервлет-сопоставление). – unwichtich