Vdl-document Problem

Hallo,

hier auch schon mein nächstes Problem.

Ich habe mir ein Buch geholt “Professionell entwickeln mit Java EE 7 - Das umfassende Handbuch”. Im Gegensatz zum Buch hab ich allerdings schon Java 8 installiert.

Jetzt habe ich allerdings das Problem dass ich eine flow.xml Datei habe, die ich jetzt 3x mit dem Buch verglichen habe und es aber trotzdem nicht funktioniert :-(.

hier mal der Ausschnitt aus der flow.xml

[XML]

<flow-definition id="register">
	<start-node>
		register_start
	</start-node>
	<view id="register_start">
		<vdl-document>
			/register/register.xhtml
		</vdl-document>	
	</view>

[/XML]

Allerdings bemängelt Eclipse bei der Zeile


Multiple annotations found at this line:
	- cvc-pattern-valid: Value '' is not facet-valid with respect to pattern '($|_|\p{L})(\p{L}|\p{Nd}|_|$)*' for type 
	 'null'.
	- cvc-complex-type.2.2: Element 'vdl-document' must have no element [children], and the value must be 
	 valid.

Ich habe auch schon nach den Fehlern gesucht, aber leider konnte ich nichts (für mich verständliches), finden.

Wenn ich den Flow “betreten” will bekomm ich dann direkt eine NPE.


Warning: StandardWrapperValve[Faces Servlet]: Servlet.service() for servlet Faces Servlet threw exception
java.lang.NullPointerException
	at com.sun.faces.flow.FlowCDIContext.flowEntered(FlowCDIContext.java:408)
	at com.sun.faces.flow.FlowHandlerImpl.pushFlow(FlowHandlerImpl.java:385)
	at com.sun.faces.flow.FlowHandlerImpl.transition(FlowHandlerImpl.java:280)
	at com.sun.faces.flow.FlowHandlerImpl.clientWindowTransition(FlowHandlerImpl.java:323)
	at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:270)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:121)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
	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:415)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:282)
	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:201)
	at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175)
	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:284)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
	at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
	at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561)
	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:565)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
	at java.lang.Thread.run(Thread.java:745)


Danke im Voraus.

Yoshi

*** Edit ***

SO, ich habe jetzt mal Eclipse neu installiert. Komischerweise ist der Fehler jetzt weg…Jetzt hab ich nur noch das kleine NPE Problem ;-).

*** Edit ***

Zu Früh gefreut… Nachdem ich in der flow.xml was anderes probiert hab, wurde der Fehler wieder angezeigt :-/.

hmm, kann denn wirklich niemand helfen :frowning: oder fehlt noch irgendeine Angabe?

VIELEN DANK

Das ist ein Bug in der XML-Schema Definition von JSF 2.2. Ursache ist, dass das Element “vdl-document” fälschlicherweise den Typ “java-identifierType” bekommen hat. In diesem sind keine Slashes oder Punkte zugelassen. Zum Bug-Report geht’s hier: https://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-1301

Das ist letztlich aber nur unschön. Die NullPointerException sollte nicht dadurch verursacht sein. Da würde ich eher vermuten, dass die Konfiguration nicht zu Deinen Klassen und Template-Files passt (evtl. kürzlich refactort oder Dateien umbenannt?). Mehr kann ich dann auch nicht mehr beitragen. Dafür kenne ich JSF viel zu oberflächlich.

ohne ServerFaces-Kenntnisse allgemeines dazu:

die einzigen bisher im Internet vohandenen Vorkommen der zweiten Fehlermeldung sind Bug-Einträge a la
https://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-1301
leider ohne rechte Lösung

(nach anderen Erfahrungen erstaunlich dass der Thread hier selber noch kein Suchergebnis ist…)


ganz allgemein probiere doch einmal
<vdl-document>/register/register.xhtml</vdl-document>
Zeilenumbrüche sollten besser nichts ausmachen, aber vielleicht ja doch…

ist die erste Fehlermeldung auch zu vdl-document? das Pattern erlaubt anscheinend nur Werte wie ‘register_start’,
teste doch spaßeshalber, welche Fehlermeldungen es gibt wenn du auf
<vdl-document>test</vdl-document>
wechselst oder vdl-document auch erstmal wegläßt, vielleicht ist der erste Fehler von woanders und macht soviel im Parsing kaputt dass der verrückte zweite kommt,

wobei auch für den ersten kein Grund ersichtlich ist, außer evtl. wieder Zeilenumbrüche, start-node etwa genauso auf eine Zeile kürzen


immer gut (unter Windows nötig) falls noch nicht:
stelle in Eclipse den Workspace auf UTF-8 um (Preferences - General - Workspace)

[QUOTE=SlaterB]ohne ServerFaces-Kenntnisse allgemeines dazu:

die einzigen bisher im Internet vohandenen Vorkommen der zweiten Fehlermeldung sind Bug-Einträge a la
https://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-1301
leider ohne rechte Lösung

(nach anderen Erfahrungen erstaunlich dass der Thread hier selber noch kein Suchergebnis ist…)

[/QUOTE]

Genau das hatte ich auch gefunden…

ganz allgemein probiere doch einmal
<vdl-document>/register/register.xhtml</vdl-document>
Zeilenumbrüche sollten besser nichts ausmachen, aber vielleicht ja doch…

Habe ich jetzt mal probiert, tritt dann genauso auf.

ist die erste Fehlermeldung auch zu vdl-document? das Pattern erlaubt anscheinend nur Werte wie ‚register_start‘,
teste doch spaßeshalber, welche Fehlermeldungen es gibt wenn du auf
<vdl-document>test</vdl-document>
wechselst oder vdl-document auch erstmal wegläßt, vielleicht ist der erste Fehler von woanders und macht soviel im Parsing kaputt dass der verrückte zweite kommt,

Wenn ich keinen Wert in vdl-document habe beschwert er sich mit einer

 javax.servlet.ServletException: String index out of range: 0

Wenn ich es ganz weg lasse bekomme ich wenn ich ein „Run On Server“ mache:

cannot Deploy onlineshop
deploy is failing=Error occurred during deployment: Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.RuntimeException: javax.faces.FacesException: javax.xml.xpath.XPathExpressionException: Within exactly one child is allowed, and it must be a . Please see server.log for more details.

immer gut (unter Windows nötig) falls noch nicht:
stelle in Eclipse den Workspace auf UTF-8 um (Preferences - General - Workspace)

[/QUOTE]

Ich nutze hier Debian Jessie, aber auch sonst habe ich immer UTF8 eingestellt ;).


Ich habe jetzt noch etwas rumprobiert…mir ist dabei aufgefallen: Beim ersten Aufruf des Flows bekomm ich die NPE…der ZWEITE Aufruf funktioniert.
Nach dieser NPE habe ich allerdings bei 2 weiteren commandButtons (jeweils einen um auf Deutsch und einen um auf Englisch umzustellen) einen NPE. Scheinbar liegt der Fehler wo GANZ anders.

Fürs erste geb ich mich hier geschlagen und fahre mit dem Beispiel OHNE FacesFlow fort ;-). Wenn ich das durch habe werde ich mich diesem Problem noch einmal widmen.

vielen Dank schonmal für eure Hilfe

Yoshi