# getParameter() liefert null



## RezaScript (21. Mai 2019)

Hallo,

ich habe ein Formular und wenn ich es abschicke, bekomme ich so den Wert:


```
System.out.println(req.getParameter("username"));
```

Ohni Ajax funktioniert das bestens aber mit der Fetch API ist die Ausgabe `null`.


```
const log = console.log.bind(console);

document.getElementById('login').addEventListener('submit', (e) => {
    e.preventDefault();

    const loginData = new FormData();

    fetch('login', {
        method: 'POST',
        body: { username: 'test' }
    })
    .then((response) => {
        return response;
    })
    .then((data) => {
        log(data);
    })
    .catch(err => {
        console.error(err);
    })
});
```

Funktioniert das vielleicht deshalb nicht, weil es kein Array ist, sondern ein Objekt?

Ich habe es auch so probiert:

```
req.getParameterMap().entrySet().stream().map(e -> e.getKey() + " -> " + Arrays.toString(e.getValue())).forEach(System.out::println);
```
Der gibt mir gar nichts zurück.


----------



## mihe7 (21. Mai 2019)

Probier mal:

```
const loginData = new FormData();

    loginData.append("username", "test");

    fetch('login', {
        method: 'POST',
        body: loginData
    })
    ...
```


----------



## RezaScript (21. Mai 2019)

Das liefert mir auch null.


----------



## mihe7 (22. Mai 2019)

Ja, sehe gerade, dass FormData immer als multipart/form-data versendet wird, während der Standard bei HTML-Formularen application/x-www-form-urlencoded ist. Du hast also zwei Möglichkeiten: in neueren Browsern sollte es funktionieren, wenn Du statt FormData URLSearchParams verwendest (oder Du kodierst es eben selbst entsprechend) oder Dein Servlet arbeitet mit Multipart-Daten (getParts() usw.)


----------



## RezaScript (22. Mai 2019)

Also ich habs jetzt grad mit `System.out.println(req.getPart("username"));` probiert. Gibt mir auch null aber das mit dem `URLSearchParams` klappt bestens. Danke für den Hinweis!


----------



## mihe7 (22. Mai 2019)

RezaScript hat gesagt.:


> Gibt mir auch null


Damit Dein Servlet mit Multipart-Daten arbeitet, musst Du es mit @MutlipartConfig (https://docs.oracle.com/javaee/7/api/javax/servlet/annotation/MultipartConfig.html) annotieren.


----------



## RezaScript (22. Mai 2019)

Ok super danke. Das hilft mir weiter!


----------

