# Einfaches Java Projekt funktioniert nicht



## denis7788 (26. Jul 2015)

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

```
<?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:

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

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

    }



}
```


----------



## denis7788 (26. Jul 2015)

Und falls es noch hilft die web.xml und glassfish-web.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>
```


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


----------



## stg (29. Jul 2015)

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


----------



## denis7788 (14. Aug 2015)

Hi stg,

danke für die Antwort. Das Problem war, dass ich die URL ohne "faces" aufgerufen habe.


----------

