2015-02-02 1 views
1

필드 이름이 전송시 method/url 매개 변수 중 하나와 동일한 양식 인 경우 (예 : someInt). 나는. 내 양식은 @(dummyForm:Form[Dummy], someInt:Int)이고 dummyForm 필드는 "someInt" -> number이고 컨트롤러는 def submit(someInt:Int) =...으로 정의됩니다. (someInt,ArrayBuffer(222)) :bindFromRequest 및 asFormUrlEncoded가 다른 값을 반환합니다.

  • request.body.asFormUrlEncoded 한 someInt, 입력 필드에 입력, 즉 값을 보여줍니다 Sample code here.

    는이 전 dummy.someInt 값 (222) 및 URL 매개 변수를 555 양식을 제출한다고 가정 해 봅시다, 나는 다음과 같은 발견

  • bindFromRequest 그러나 어떻게 든이 경우

이 예상되는 동작인가에 URL 매개 변수 값으로 폼 값, 555을 결합? 나는 bindFromRequest이 둘 사이를 구별 할 수있을 것이라고 생각했을까요? 이러한 유형의 충돌을 방지하려면 다른 이름을 사용하는 것보다 더 좋은 방법이 있습니까?

(이 경우의 해결 방법은 대신 bindFromRequest의 매개 변수가 버전을 사용하는, 당신이 명시 적으로 값, 즉 bindFromRequest(request.body.asFormUrlEncoded.getOrElse(Map())) 내가 스칼라를 사용하고의 asFormUrlEncoded 세트를 지정하면 원하는대로 작동하는 것 같다 -..에 시도하지 않은 Java에서 복제)

+0

플레이 자바에서 이것을 시도하고 문제가 설명 된 것과 동일한 결과를 얻었습니다. 예상 행동인지 알 수 없습니다. – silentprogrammer

답변

1

bindFromRequest 함수에서 request.queryString은 명시 적으로 값 목록에 추가됩니다.

+0

와우, 네 말이 맞아. 나는 그 코드를 보았지만 끝까지 보지 않았다. 나는 그 이유가 무엇인지 궁금하다. 어쨌든 asFormUrlEncoded가 명시적인 것만 보이는 것이 그 다음에 갈 수있는 유일한 방법입니다. – wwkudu

+0

아마도 좋은 이유가 있지만 누구나 queryString이 추가 된 이유를 알 수 있습니다. 맵 키의 순서는 afaik가 보장되지 않으므로 동일한 이름을 가진 필드 이름과 url 매개 변수의 경우 bindFromRequest가 반환하는 값은 예측할 수 없습니다 ... – wwkudu

관련 문제