[JSF] Java Server Faces & HTML5

0

Witam

Ostatnio męczę się z HTML5 w JSF. Niestety bez większego skutku. Nie mam pojęcia jak połączyć te dwie technologie. Próbowałem różnych kodów z internetu. Jednak powodują one u mnie same błędy i nie przynoszą zamierzonego efektu. Czy któryś z forumowiczów wie jak rozwiązać ten problem??

<?xml version="1.0" encoding="UTF-8"?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:fmt="http://java.sun.com/jsp/jstl/fmt"
xmlns="http://www.w3.org/1999/xhtml"
version="2.0">
<jsp:directive.page contentType="text/html" pageEncoding="UTF-8"/>

<![CDATA[<!DOCTYPE html>]]>
<html lang="de">
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
        <title>Neopay Init-Antwort</title>
        <link rel="stylesheet" type="text/css" href="http://www.blueprintcss.org/blueprint/src/typography.css"/>
        <link rel="stylesheet" type="text/css" href="http://www.blueprintcss.org/blueprint/src/forms.css"/>
        <link rel="stylesheet" type="text/css" href="http://www.blueprintcss.org/blueprint/src/grid.css"/>
    </head>

    <body>
        <div class="container">

        </div>

    </body>
</html>

</jsp:root>

LUB:

<jsp:root 
    xmlns:jsp="http://java.sun.com/JSP/Page"
    xmlns:c="http://java.sun.com/jsp/jstl/core"
    xmlns="http://www.w3.org/1999/xhtml"
    version="2.0">
    
  <jsp:directive.page contentType="text/html" pageEncoding="UTF-8" />
  <jsp:output omit-xml-declaration="true" />
  <jsp:output doctype-root-element="HTML" 
              doctype-system="about:legacy-compat" />

  <html lang="pl">
    <head>
      <meta http-equiv="content-type" content="text/html; charset=utf-8" />
      <title>HTML5</title>
    </head>
    <body>
      <h1>HTML5</h1>
    </body>
  </html>

</jsp:root>

Wywołuje u mnie:

HTTP Status 500 -

type Exception report

message

descriptionThe server encountered an internal error () that prevented it from fulfilling this request.

exception

java.lang.NullPointerException
note The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 3.0.1 logs.

GlassFish Server Open Source Edition 3.0.1

Zaznaczam że to mój pierwszy projekt w JSF więc jestem jeszcze zielony. Więc proszę w miarę zrozumiale pisać ;P

0

Co ma to wspolnego z JSF i HTML5 ??? I podaj caly stos wyjaktow.

0

Jestem początkujący więc mogłem coś pochrzanić z pojęciami. Tak więc z jsf ma to wspólnego tylko tyle że właśnie na tym fremworku staram się oprzeć swój kod, no i strony wynikowe z mają być zgodne z HTML5. Druga część jest o tyle istotna że zwykłe XHTML generuje bardzo ładnie a jak przebuduje na opisany kod zaczyna się sypać :(

Logi ze stosem wyjątku:

[#|2010-09-06T19:18:22.214+0200|WARNING|glassfish3.0.1|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=28;_ThreadName=Thread-1;|StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for servlet Faces Servlet threw exception
java.lang.NullPointerException
	at com.sun.faces.context.flash.ELFlash.getPhaseMapForReading(ELFlash.java:748)
	at com.sun.faces.context.flash.ELFlash.isEmpty(ELFlash.java:466)
	at com.sun.faces.facelets.util.DevTools.writeVariables(DevTools.java:318)
	at com.sun.faces.facelets.util.DevTools.writeVariables(DevTools.java:208)
	at com.sun.faces.facelets.util.DevTools.debugHtml(DevTools.java:123)
	at com.sun.faces.renderkit.RenderKitUtils.renderHtmlErrorPage(RenderKitUtils.java:1139)
	at com.sun.faces.context.ExceptionHandlerImpl.throwIt(ExceptionHandlerImpl.java:249)
	at com.sun.faces.context.ExceptionHandlerImpl.handle(ExceptionHandlerImpl.java:136)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:119)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:313)
	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
	at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
	at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
	at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
	at java.lang.Thread.run(Thread.java:619)
|#]

W razie czego dożyce tez pliki konfiguracyjne:

faces-config.xml:

<?xml version="1.0"?>
<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_1_2.xsd"
	version="2.0">

	<application>
                <locale-config>
                    <default-locale>pl</default-locale>
                    <supported-locale>en</supported-locale>
                </locale-config>

                <resource-bundle>
			<base-name>com.corejsf.messages</base-name>
			<var>msg</var>
		</resource-bundle>
                <message-bundle>javax.faces.messages</message-bundle>


	</application>
</faces-config>

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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-app_3_0.xsd">
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    <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>
        <url-pattern>*.jsf</url-pattern>
        <url-pattern>*.jsp</url-pattern>
        <url-pattern>*.html</url-pattern>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>



    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>faces/index.xhtml</welcome-file>
    </welcome-file-list>
</web-app>

sun-web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD GlassFish Application Server 3.0 Servlet 3.0//EN" "http://www.sun.com/software/appserver/dtds/sun-web-app_3_0-0.dtd">
<sun-web-app error-url="">
  <context-root>/WebApplication1</context-root>
  <class-loader delegate="true"/>
  <jsp-config>
    <property name="keepgenerated" value="true">
      <description>Keep a copy of the generated servlet class' java code.</description>
    </property>
  </jsp-config>
</sun-web-app>

0

Co mi na szybko przychodzi do glowy:
-uzywasz JSP tagi zamiast tagow JSF. W pierwszej fazie 'restore view' jsf nie wie moze jak stworzyc strukture dokumentu. Jesli uzywasz jsp to strona musi rozpoczynac sie <f:view> tagiem. Dla faceletu nie jest to wymagane.

  • w jsf 2.0 jsp zostalo jako depracted zaznaczone, do tego zalecane jest uzycie facelets.
  • jesli twoje strony maja rozszerzenie xhtml to musisz to zdefiniowac w web.xml i wtedy sa uzywane facelety zamiast jsp
 <context-param>
        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
        <param-value>.xhtml</param-value>
    </context-param>
  • sprawdz czy masz biblioteki implementujace JSF (np myFaces czy Mojjara , chociaz Glassfish uzywa standardowo te drugie)
  • jak uzywasz eclipse albo netbeans to utworz projekt JSF uzywac gotowej konfiguracji, albo otworz przykladowy projekt (w netbeans masz pare gotowcow)
0

Dzięki za rady. Korzystałem z projektu wygenerowanego przez netbeans, ale utworzyłem nowy i sprawdziłem ten szablon tam. Wszystko działa:)
Może było to spowodowane trochę innymi ustawieniami przy tworzeniu obiektu.

Dzięki za pomoc :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1