2016-07-02 11 views
0

Ich beginne mit JSF Flow. Ich mache wie in diesem Tutorial beschrieben http://courses.coreservlets.com/Course-Materials/pdf/jsf/jsf2/JSF-2.2-Faces-Flow-1.pdf, Seiten 6-12.JSF Flow - Implizite Navigation funktioniert nicht

Implizite Navigation funktioniert nicht für mich, wie im Tutorial. Wenn ich zu index.xhtml navigiere, dann klicke auf commandButton zu sampleFlow, ich bekomme nullPointerException. Nach dem Aktualisieren von/F5 wird meine Flowpage geladen. Dann kann ich Page-A- und Page-B-Links verwenden. Aber immer wenn ich mit dem Index, sampleFlow-return aus dem Flow heraus navigieren möchte, bekomme ich den gleichen Stack.

Glassfish Log

FATAL: JSF1073: javax.faces.FacesException caught during processing of INVOKE_APPLICATION 5 : UIComponent-ClientId=, Message=null 
FATAL: No associated message 
javax.faces.FacesException 
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:89) 
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) 
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658) 
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160) 
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734) 
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673) 
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174) 
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:416) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:283) 
    at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459) 
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167) 
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206) 
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180) 
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235) 
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111) 
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) 
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536) 
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137) 
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591) 
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.NullPointerException 
    at com.sun.faces.flow.FlowCDIContext.flowEntered(FlowCDIContext.java:423) 
    at com.sun.faces.flow.FlowHandlerImpl.pushFlow(FlowHandlerImpl.java:392) 
    at com.sun.faces.flow.FlowHandlerImpl.transition(FlowHandlerImpl.java:280) 
    at com.sun.faces.application.NavigationHandlerImpl.handleNavigation(NavigationHandlerImpl.java:240) 
    at com.sun.faces.application.NavigationHandlerImpl.handleNavigation(NavigationHandlerImpl.java:183) 
    at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:132) 
    at javax.faces.component.UICommand.broadcast(UICommand.java:315) 
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790) 
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282) 
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) 
    ... 31 more 

Ich habe einfache Anwendung erstellt, mit der Struktur wie folgt:

| index.xhtml 
| sampleFlow-return.xhtml 
| 
+---sampleFlow 
|  page_a.xhtml 
|  page_b.xhtml 
|  sampleFlow-flow.xml 
|  sampleFlow.xhtml 
| 
\---WEB-INF 
     web.xml 

Jede der * .xhtml Seiten enthält denselben Satz command

<h:form> 
    <h:commandButton action="sampleFlow" value="sampleFlow"/><br/> 
    <h:commandButton action="page_a" value="sampleFlow - page A"/><br/> 
    <h:commandButton action="page_b" value="sampleFlow - page B"/><br/> 
    <h:commandButton action="sampleFlow-return" value="sampleFlow - return"/><br/> 
    <h:commandButton action="index" value="Home"/><br/> 
</h:form> 

Meine sampleFlow-flow.xml ist leer, wie im Tutorial angegeben.

Ich bin mit Netbeans 8.1 mit Glassfish 4.1.1

Antwort

0

ich fehlte

\---WEB-INF 
     beans.xml 

Diese Datei mit Start grundsätzlich leer sein und Tags nur endet. XML-Beispiel könnte folgendermaßen aussehen

<?xml version="1.0" encoding="UTF-8"?> 
<beans version="1.2" bean-discovery-mode="all" 
     xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_2.xsd"> 
</beans> 

Nach dieser Dummy-Datei hinzufügen, die Navigation wie vorgesehen funktioniert.