# JSF: Problem bei der einfachsten Applikation



## Azemaria (21. Okt 2020)

Hallo ersteinmal ich bin jemand der gerne lernen würde Web-Anwendungen mit hilfe von Java-Server-Faces zu erstellen jedoch stoße ich grade 
bei der einfachsten Anwendung auf eine Problem welches ich nicht lösen kann.

Es geht um zwei simple .xhtml Seiten "index.xhtm" und "seite2.xhtml" zwischen denen ich mithilfe eines Links hin und her wechseln kann.
Sobald ich die Applikation starte wird mit die Index.xhtml genauso angezeigt, wie es sein sollte, wenn ich jedoch den link benutze um auf 
seite2.xhtml zu wechseln werden die jsf-komponente nicht mehr richtig dargestellt. Selbst dann nicht mehr, wenn ich von der seite2.xhtml 
wieder zurück auf die index.xhtml über den Link wechsle. 

Warum stellt der Browser bei laden der Applikation alles richtig dar aber nach Benutzung des Links funktioniert es nicht mehr ?


index.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">
    <h:head>
        <title>seite 1</title>
    </h:head>
    <h:body>
        <h1>Testseite 1</h1>
      
        <br/>
        <br/>
        #{userBean.text}
        <br/>
        <br/>
        <h:outputLabel id="testAnzeige" value =" TEST!"/>
        <br/>
        <br/>
      
        <a href="seite2.xhtml">Seite 2</a>

      
    </h:body>
</html>
```
--------------------------------------------------------------------------------------------------------------------------------------------------------
seite2.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">
    <h:head>
        <title>seite 2</title>
    </h:head>
    <h:body>
        <h1>Testseite 2</h1>
      
        <br/>
        <br/>
         #{userBean.text}
        <br/>
        <br/>
        <h:outputLabel id="testAnzeige" value =" TEST!"/>
        <br/>
        <br/>
      
        <a href="index.xhtml">Index</a>
      
  
    </h:body>
</html>
```
------------------------------------------------------------------------------------------------------------------------------------------------------------------
UserBean.java-----------------------------------------------------------------------------------------------------------------------------------------------

```
import javax.annotation.ManagedBean;
import javax.enterprise.context.Dependent;
import javax.faces.bean.SessionScoped;
import javax.inject.Named;



@ManagedBean
@SessionScoped
@Named(value = "userBean")
@Dependent

public class UserBean {

  
    private String text = "Hallo!";
  

 
  
  
    //CONSTRUCTOR BASIC-----------------------------------------------
    public UserBean() {
    }
  
    //GETTER + SETTER-------------------------------------------------

     public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

  
}
```
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
web.xml----------------------------------------------------------------------------------------------------------------------------------------------------------------

```
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    <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>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>faces/index.xhtml</welcome-file>
    </welcome-file-list>
</web-app>
```
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Ergebnis ist:












wenn ich über den "Index"-Link wieder zurück gehe bleibt das Ergebnis gleich und ich komme nicht drauf woran das liegen könnte.
Also suche ich hier vergeblich nach Hilfe : (


----------



## mihe7 (21. Okt 2020)

Das JSF-Servlet greift bei Dir nur, wenn die URL /faces/ "enthält". Änder z. B. 

```
<url-pattern>/faces/*</url-pattern>
```
mal zu

```
<url-pattern>*.xhtml</url-pattern>
```


----------



## Azemaria (21. Okt 2020)

danke sehr mihe7!!

habe mit deiner Hilfe das umgewandelt in:


```
<servlet-mapping>

        <servlet-name>Faces Servlet</servlet-name>

        <url-pattern>*.xhtml</url-pattern>    //<---- von /faces/*  zu  *.xhtml

    </servlet-mapping>

    <session-config>

        <session-timeout>

            30

        </session-timeout>

    </session-config>

    <welcome-file-list>

        <welcome-file>index.xhtml</welcome-file>      //<---- von faces/index.xhtml   zu   index.xhtml

    </welcome-file-list>
```

das hat funktioniert


----------

