2012-06-13 37 views
5

Tôi đang cố gắng để POST tham số để hành động, và đã viết trong các tuyến đường:Chơi 2.0 framework - thông số POST

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

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

và tôi có một hành động

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

hình thức của tôi là

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

Và nó không hoạt động

Để yêu cầu 'POST /login' [Missing parameter: name]

Tôi đang làm gì sai?

+0

Bạn có thể xin vui lòng chỉnh sửa câu hỏi đặt mã của biểu mẫu. –

+0

như là một dự đoán mù (php phát triển ở đây), '/ login/name:/password:' định nghĩa rằng bạn được ** yêu cầu ** đưa ra hai tham số bổ sung .. một là thiếu. Đó là những gì lỗi nói. –

Trả lời

3

Đơn giản chỉ cần thay đổi lộ trình như sau:

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

By KHÔNG bao gồm tên động (: tên và: mật khẩu) trong đường dẫn định tuyến, giả thiết là các biến đến từ yêu cầu (IE: đầu vào html của bạn)

Lỗi bạn nhận được cho biết tên và mật khẩu không xuất hiện trong đường dẫn url ... đó là chính xác vì đường dẫn bạn chỉ định trong các tuyến đường của bạn chỉ ra con đường nên tìm một cái gì đó như thế này:

/đăng nhập/myname/mypassword

Vui lòng kiểm tra http://www.playframework.org/documentation/2.0.1/JavaRouting và nhìn vào phần gọi là "Gọi phương pháp phát động"

+0

Dường như phương pháp này không hoạt động đối với POST, tôi đang sử dụng giải pháp http://stackoverflow.com/questions/20221233/using-post-routes-parameters-in-play-framework này – Oleg

3

tuyến đường của bạn không nên bao gồm phụ tùng động (tên, mật khẩu) vì dữ liệu là trong cơ thể và không phải là url

Các vấn đề liên quan