Ik probeer mijn Eclipse JSF-project op Apache Tomcat op een andere computer uit te voeren.
Ik heb een oorlogsbestand gemaakt met deze tutorial . Wanneer ik echter de oorlog implementeer en open de facelet-pagina in Firefox, krijg ik alleen het volgende foutbericht:
Dit XML-bestand lijkt geen stijlinformatie te hebben die ermee is gekoppeld. De documentboom wordt hieronder weergegeven.
Dit mijn eerste keer dat ik mijn JSF-app probeer uit te voeren zonder Eclipse. Hoe wordt dit veroorzaakt en hoe kan ik het oplossen?
Ik probeer eigenlijk de volgende facelet-pagina te openen:
<?xml version="1.0" encoding="UTF-8"?>
<ui:composition template="/WEB-INF/templates/template_a.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">
<ui:define name="title">
tytol
</ui:define>
</ui:composition>
Antwoord 1, Autoriteit 100%
Dit XML-bestand lijkt geen stijlinformatie te hebben die ermee is gekoppeld. De documentboom wordt hieronder weergegeven.
U krijgt dit bericht aan de clientzijde wanneer de client (de webbrowser) om de een of andere reden de HTTP-antwoordinhoud die een HTML-document vertegenwoordigt, interpreteert als text/xml
in plaats van text/html
en de geparseerde XML-structuur heeft geen XML-stylesheet. Met andere woorden, de webbrowser heeft de opgehaalde HTTP-antwoordinhoud geparseerd als XML in plaats van als HTML vanwege een ontbrekend of onjuist type HTTP-antwoordinhoud.
In het geval van JSF/Facelets-bestanden die de standaardextensie .xhtml
hebben, kan dat op zijn beurt gebeuren als het HTTP-verzoek de FacesServlet
niet heeft aangeroepen en dus het was niet in staat om het Facelets-bestand te ontleden en de gewenste HTML-uitvoer te genereren op basis van de XHTML-broncode. Firefox raadt dan alleen het type HTTP-reactie-inhoud op basis van de bestandsextensie .xhtml
die in uw Firefox-configuratie blijkbaar standaard wordt geïnterpreteerd als text/xml
.
U moet ervoor zorgen dat de HTTP-verzoek-URL, zoals u ziet in de adresbalk van de browser, overeenkomt met de <url-pattern>
van de FacesServlet
zoals geregistreerd in webapp’s web.xml
, zodat deze wordt aangeroepen en de gewenste HTML-uitvoer kan genereren op basis van de XHTML-broncode. Als het bijvoorbeeld *.jsf
is, dan moet je de pagina openen met /some.jsf
in plaats van /some.xhtml
. Als alternatief kunt u ook gewoon de <url-pattern>
wijzigen in *.xhtml
. Zo hoef je nooit meer met virtuele URL’s te knoeien.
Zie ook:
Houd er dus rekening mee dat u eigenlijk geen XML-stylesheet nodig heeft. In jouw specifieke geval was het gewoon een verkeerde interpretatie van de webbrowser terwijl hij zijn best deed om iets presentabels te maken van de opgehaalde HTTP-responsinhoud.