JSF wird nicht angezeigt

Hallo,

ich beschäftige mich derzeit mit JSF und stoße auch direkt mal auf Probleme. Wenn ich mir meine Seite in Browser anzeigen lassen werden die JSF Komponenten nicht angezeigt. Benutze jboss 6.4.

web.xml


<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         id="WebApp_ID" version="2.5">
    <welcome-file-list>
        <welcome-file>faces/home.xhtml</welcome-file>
    </welcome-file-list>
    <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>
    <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>*.xhtml</url-pattern>
    </servlet-mapping>
</web-app>

home.xhtml


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
      xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:body>
    <f:view>
        <h:form>
            <h3>#{helloWorld.greeting}</h3>
            <h:commandLink action="page2" value="Page Two" />
        </h:form>
    </f:view>
</h:body>
</html>

Quelltext im Browser



<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:ui="http://xmlns.jcp.org/jsf/facelets" xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:body>
    <f:view>
        <h:form>
            <h3>Hello World</h3>
            <h:commandLink action="page2" value="Page Two"></h:commandLink>
        </h:form>
    </f:view>
</h:body>
</html>

In dem Fall wird der commandLink nicht angezeigt. Ich habe auch schon andere Komponenten ausprobiert, aber auch dir werden nicht angezeigt.
Hat jemand eine Idee woran das liegen kann?

Viele Grüße
Ceguinho

ohne JSF so richtig zu kennen habe ich mir aus den Beispielen grob zusammengemurmelt,
dass <h:body> außerhalb von <f:view> vielleicht nicht geht, weil <f:view> JSF erst so richtig beginnt?

schreibe normales HTML außen herum, wie in Beispielen a la
https://myfaces.apache.org/jsfintro.html
oder setze das <f:view> höher, und DARIN <h:body> wie in Beispiel
f:view

Warum hast Du soviele Servletmappings in Deiner web.xml? *.jsf sollte genügen. Den Rest erledigst Du über nginx oder apache.

Welche URL rufst Du denn auf?
@SlaterB : f:view funktioniert in h:body.

Ich benutze das Tutorial von JSF - First Application. Dort werden die mappings alle so angegeben, deswegen habe ich das übernommen.
Über http://127.0.0.1:8080/jsftutorial rufe ich die Webseite auf.
@SlaterB Habe die Tags mal ein bisschen rum getauscht, allerdings ohne Erfolg.

#{helloWorld.greeting} wird erfolgreich umgewandelt, da funktioniert also schon einiges,
die höheren Dinge wie <h:commandLink stehen im Tutorial-Link nicht, woher die kopiert?

danach gesucht sehe ich nun zwei mögliche Namespaces,
xmlns:h=„http://xmlns.jcp.org/jsf/html“ (JSF 2.2) oder auch
xmlns:h=„http://java.sun.com/jsf/html“ (JSF 2.0)

hier noch ein Link zum Übergang

teste mal die alte Variante, java.sun.com statt xmlns.jcp.org (bei allen Vorkommen),

und bei Gelegenheit und Möglichkeit überdenke welche Versionen im Einsatz/ gewünscht sind,
aber für einige Zeit sicher nicht weiter als kopieren und hoffen dass es geht :wink:

eine Schande dass es für solche Frameworks keine guten Ausprobier-Umgebungen gibt, welche unbekannte Namespaces/ fehlende Mappings als Warnung melden usw.

Ops, lag tatsächlich am falschem Namespace. Mit xmlns:h=“http://java.sun.com/jsf/html” funktioniert es.
Danke euch beiden für die schnelle Hilfe.

Unterstützt der jboss 6.4 eigtl. schon JavaEE7?
JSF 2.2 läuft leider nur in Containern, die JavaEE7 implementiert haben.

Leider können es nicht alle… Obwohl JavaEE7 seit zwei Jahren auf dem Markt ist.

viele Grüße
Steven

[QUOTE=StevenHachel]Unterstützt der jboss 6.4 eigtl. schon JavaEE7?
JSF 2.2 läuft leider nur in Containern, die JavaEE7 implementiert haben.

Leider können es nicht alle… Obwohl JavaEE7 seit zwei Jahren auf dem Markt ist.

viele Grüße
Steven[/QUOTE]
Welcher aktuelle Enterprise-Server unterstützt denn kein JEE7?

So einige… aktuell arbeiten wir (leider) mit dem WLS 12.1.3. Dieser hat bis heute keine JavaEE7 Implementierung.
Hier gibt es eine Liste aller Applikationen Server und deren derzeitigen Implementierungen…
Java EE Compatibility

viele Grüße
Steven

Deshalb auch von mir die Frage nach aktuellen Servern. Von denen kann zumindest das Full-Profile jeder Server :wink:

Das ist wohl wahr, aber manchmal ist die Infrastruktur etwas Bescheiden und die Umstellung dauert etwas länger als gewünscht. :slight_smile: