Einfaches Java Projekt funktioniert nicht

denis7788

Bekanntes Mitglied
Hallo,

ich habe ein kleines Tutorial gemacht und finde die Ursache nicht, warum das Projekt nicht richtig funktioniert.
Wenn ich die "Anwendung" starte, erscheint auf der Startseite weder ein Eingabeelement noch ein Button. Ich poste hier mal die index.xhtml, die greet.xhtml und die zugehörige Java Klasse (und was ist der Tag für JAVA Code? Ich habe "CODE" genutzt, da im Editor keine Optionen zu finden sind):

index.xhtml
Code:
<?xmlversion='1.0'encoding='UTF-8'?>

<!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml"

      xmlns:h="http://java.sun.com/jsf/html">

    <h:head>

        <title>Facelet Title</title>

    </h:head>

    <h:body>

        <h:form>

            Wie heißen Sie??<br/>

            <h:inputText value="#{user.name}"/>

            <h:commandButtonaction="greet"value="Grüß Dich!"/>

        </h:form>

    </h:body>

</html>

greet.xhtml:
Code:
<?xmlversion='1.0'encoding='UTF-8'?>

<!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml"

      xmlns:h="http://java.sun.com/jsf/html">

    <h:head>

        <title>Facelet Title</title>

    </h:head>

    <h:body>

        <h1>Hallo #{user.name}!</h1>

    </h:body>

</html>

User.java
Code:
package com.tester;



import javax.faces.bean.ManagedBean;



import com.sun.xml.ws.config.metro.parser.jsr109.String;



@ManagedBean

publicclass User {



    private String name;



    public String getName() {

        return name;

    }



    public void setName(String name) {

        this.name = name;

    }



}
 
Zuletzt bearbeitet:
Und falls es noch hilft die web.xml und glassfish-web.xml:
XML:
<?xmlversion="1.0"encoding="UTF-8"?>

<web-appxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns="http://java.sun.com/xml/ns/javaee"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"version="3.0">

  <display-name>Test1</display-name>

  <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>

</web-app>

XML:
<?xmlversion="1.0"encoding="UTF-8"?>



<!DOCTYPEglassfish-web-appPUBLIC"-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN""http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">

<glassfish-web-app>

    <context-root>/Test1</context-root>

</glassfish-web-app>
 
Zuletzt bearbeitet von einem Moderator:
Die Tatsache, dass kein Button usw gerendert wird, kann darauf hindeuten, dass du die Seite falsch aufrufst. Bei deiner Konfiguration lautet der korrekte Aufruf der Index-Seite z.B. "/Test1/faces/index.xhtml" und nicht "/Test1/index.xhtml". Ich würde dir jedoch raten von Anfang an als Pattern für das Servlet-Mapping "*.xhtml* statt "/faces/*" zu nehmen, dann bekommst du später weniger Probleme. "/faces/*" ist da ein wenig veraltet. Bei ersten GEh-Versuchen ist das aber auch erst einmal total egal...

Dann weiß ich nicht, was der import von "import com.sun.xml.ws.config.metro.parser.jsr109.String;" da bezwecken soll. Du kannst die ganz normale String-Klasse von Java verwenden.

Der Default-Scope von JSF MangedBeans ist glaube ich RequestScope. Wenn du JSF ManagedBeans verwenden und die gleiche Bean-Instanz auf verschiedenen Views nutzen willst, dann annotier sie für den Anfang zusätzlich mit @SessionScoped (javax.faces.bean.SessionScoped) Die Instanz ist dann an die HTTP Session vom Client gekoppelt.
Deinem Command-Button fehlt außerdem noch ein passendes action-Attribut, anhand dessen die Navigation auf die greet.xhtml Seite erfolgt.

Der Tag für Java-Code ist jetzt "[C ODE="Java"]...[/CODE]"
 

Zurück
Oben