2012-02-08 2 views
2

이전 입력란에서 입력 한 입력란이 있으므로 (입력이 두 번째 페이지에서 사용 중지됨으로 설정 됨) 그 값에 대해 null이 수신됩니다.playframework, 입력 사용 중지가 재생 값 전달을 방해합니까?

<input type="text" class="boxtpl" name="${field.name}" value="${user?.email}"> 

을하지만이되지 않습니다 :이 작품이 틀을 깰 것으로 보인다 이유가

<input type="text" class="boxtpl" name="${field.name}" value="${user?.email}" disabled="disabled"> 

있습니까?

답변

5

사용하지 않는 컨트롤 이 실제로 양식과 함께 제출되어서는 안되기 때문에 사실 정상적인 동작입니다. HTML form specification에 따르면

설정

이, 장애인 속성이 요소에 다음과 같은 효과가 있습니다

  • 장애인 컨트롤이 포커스를받을 수 없습니다.
  • 비활성화 된 컨트롤은 탭 탐색에서 건너 뜁니다.
  • 비활성화 된 컨트롤은 성공할 수 없습니다.

successful의 정의는 in the same document를 찾을 수 있습니다. 이것 때문에 Play가 망가 졌다고 제안하는 것은 약간 무의미합니다.

양식을 제출할 때 사용자가 편집 할 수없는 양식 필드를 갖고 싶으면 read-only 속성을 사용하거나 JavaScript를 사용하여 사용자 입력을 허용 할 수 있습니다.

업데이트 : 코멘트에 지적했듯이, 다음과 같은 점 또한 솔루션을 제공 할 수 있습니다 :

  • 그것은 재생 여전히 요청 객체에 장애인 컨트롤의 형태로 값을 유지하는 것이 가능하다, 그리고 단지 아무튼 ' 필요에 따라 요청에서 검색 할 수 있도록)
  • 값을 제출하고 싶지만 사용자가 컨트롤을 보지 못하도록하려면 숨겨진 필드를 사용하여 양식 값을 유지하십시오
+1

다른 대안은 데이터를 포함하는 두 번째 숨겨진 필드를 갖는 것입니다. 또한, 당신은 여전히 ​​params 객체 요청에 그것을 가지고 있지만 그것을 묶지는 않는다는 것을 알 수 있습니다. – grahamrb

+0

@grahamrb 오 그래도 요청에 그들을 유지합니까? 그걸 몰랐어, 좋은 전화. – tmbrggmn

+0

@tmbrggmn 숨겨진 필드 옵션이 최선의 대안이며, 더 탄력적입니다. –

관련 문제