2012-06-13 10 views
5

Próbuję POST parametry do działania, i napisał w trasach:Zagraj 2.0 Framework - parametry POST

# Home page 
GET /      controllers.Application.index() 

POST /login/name:/password: controllers.Application.login(name, password) 

i mam skargę

public static Result login(String name, String password) { 
    return ok(name + " " + password); 
} 

moja forma jest

<form action="/login" method="post"> 

    <input name="name" type="text" id="name"> 
    <input name="password" type="password" id="password"> 
    <input type="submit" value="Login"> 

</form> 

I nie działa

Na życzenie 'POST /login' [Missing parameter: name]

Co robię źle?

+0

Czy możesz edytuj pytanie umieść kod formularza. –

+0

jako ślepy domysł (programista PHP tutaj), '/ login/nazwa:/hasło:' definiuje, że jesteś ** wymagany **, aby dać dwa dodatkowe parametry .. jeden z nich brakuje. Tak mówi błąd. –

Odpowiedz

3

Wystarczy zmienić trasę na następujący:

POST /login controllers.Application.login(name, password) 

By nie licząc nazwy dynamiczne (: nazwa i: hasło) w ścieżce routingu, założenie jest takie, że zmienne pochodzą z żądania (IE: twoje dane html)

Otrzymany błąd wskazuje, że nazwa i hasło nie pojawiają się w Ścieżka adresu URL ... która jest poprawna, ponieważ ścieżka określono w swoich tras wskazuje, że ścieżka powinna wyglądać mniej więcej tak:

/login/myname/mojehasło

Proszę sprawdzić http://www.playframework.org/documentation/2.0.1/JavaRouting i spojrzeć na odcinku o nazwie „Wezwanie do metody generatora działania”

+0

Wygląda na to, że ta metoda nie działa w przypadku POST, używam tego http://stackoverflow.com/questions/20221233/using-post-routes-parameters-in-play-framework solution – Oleg

3

trasa nie powinna zawierać elementów dynamicznych (nazwa, hasło), ponieważ dane są w organizmie, a nie adres URL