2014-04-16 2 views
5

내가 처리 할 수있는 형태는 다음과 같이 있습니다 : 나를 때 모두를 제공하는 난이어떻게 Playframework의 스칼라와 배열 양식 필드를 바인딩하는

request.body.asFormUrlEncoded.get("features[]") 

같은 배열을 얻을 수 있습니다

<label for="features_1"> 
    <input type="checkbox" id="features_1" name="features[]" value="4"> foo 
</label> 
<label for="features_2"> 
    <input type="checkbox" id="features_2" name="features[]" value="8"> bar 
</label> 

을 항목

List(4, 8)을 선택하지만하는 I는 양식이 결합 할 때

"기능 []"

편집

위의 예는 실제로 작동과 같은

난 항상 빈 시퀀스를 얻기는,이 문제는 다른 곳에 있었다. 플레이 바인딩 특성을 변환하는 기능에 [0] = 4 및 기능 [1] = 다음 서열 (...) 또는 목록 (...) 매핑에서 올바르게 처리 8

+1

당신이 요청에서 폼을 바인딩하는 방법과 같은 주변 코드의 좀 더를 표시 할 수 있습니다. 또한 myForm에는 적용/적용 취소 기능이 없습니까? –

+0

좋아, 뭔가 비린내, 형태에 따르면 bind code name [] values는 name [0], name [1]로 확장되어야합니다 ... 좀 더 디버깅해야합니다. https://github.com/playframework/playframework/blob/2.2.x/framework/src/play/src/main/scala/play/api/data/Form.scala#L90 – Somatik

+0

좋아, 내 문제는 완전히 다른 곳 이었어. , 내 양식에 잘못된 필드 이름을 사용하여 제공된 예제는 실제로 correcly 작동합니다. – Somatik

답변

6

보십시오

<label for="features_1"> 
    <input type="checkbox" id="features_1" name="features[0]" value="4"> foo 
</label> 
<label for="features_2"> 
    <input type="checkbox" id="features_2" name="features[1]" value="8"> bar 
</label> 

편집

또는 :

myForm.bind(myForm.bindFromRequest.data + ("features"-> request.body.asFormUrlEncoded.get("features[]"))).fold(
... 
) 

이 직접 요청에서 다른 모든 필드를 결합하며,이 기능에 관해서 다음, 그들은 가고있다 수동으로 추가 할 수 있습니다. 그런 다음 더 많은 데이터를 결합 할 필요가 없습니다 경우 바로 쓰기 :

myForm.bind("features"-> request.body.asFormUrlEncoded.get("features[]")).fold(
... 
) 
+0

제안 주셔서 감사하지만 양식 작성 및 컨트롤을 재생이 inputCheckboxGroup 것 같아요이 문제를 해결할 수있는 방법이 있어야합니다. 백엔드 쪽 – Somatik

+0

내 편집에 추가 한 제안을 사용하여 양식을 바인드하십시오. – Peter

관련 문제