2012-12-29 1 views
3

임은 하나 개의 항목해야한다, 이는 내가 항목을 선택한 기본을 정의 할 수있는 방법이 경우helper.options를 사용하여 선택한 항목을 설정 하시겠습니까?

, (A helper.select의 내부에) 내 템플릿에 재생 2.0.4 및

helper.options(myitems) 

을 사용하고 있습니다 out of myitems? 어떤 힌트 주셔서 감사합니다!

모든 뉴스 제목을 보여주는 뉴스 아카이브를 상상해 : 내 경우에 대한

조금 더. 이 뉴스 아카이브는 페이지 매김을 사용하며 페이지 매김은 GET을 사용하여 다음/이전 페이지 번호를 전달합니다.

그러나 재생 프레임 워크는 POST 요청이 사용되었을 때 현재 선택된 "선택"항목 (여기에서는 뉴스 카테고리) 만 올바르게 선택합니다 - 페이지 매김은 GET을 사용합니다!

의도 된 행동 : 필터가 적용되거나 특정 뉴스 카테고리가 선택되는 동안, 이것은 "선택"양식에서 현재 선택된 뉴스 카테고리를 미리 선택함으로써 사용자에게 항상 보일 것입니다. 그림

A "스크린 샷"

enter image description here

그래서, 사람이 문제에 대처하는 방법에 대한 좋은 생각을 가지고? "선택"폼에서 어떤 항목을 선택할지 수동으로 지정하는 방법은 무엇입니까? '_default는 주어진 옵션 중에서 하나를 선택하는 대신 항상 새로운 항목을 추가합니다.) 완전한 "선택"양식을 수동으로 작성할 필요가 없다면 좋을 것입니다.

+0

올바르게 작성된 선택 필드 + 옵션이 자동으로 적절한 항목을 표시합니다. 어쨌든 샘플이 짧아서 무엇이 잘못되었는지 판단합니다. – biesior

+0

이것에 대해서 궁금해했는데, 문제가 있다고 생각합니다. 현재 POST를 사용하지 않고 GET을 사용 중입니다. ntries 및 페이지 번호 등은 GET에 의해 전달됩니다. 어떻게 든 POST를 사용하여 POST를 사용하여 필터링 된 항목에 직접 액세스 할 수없는 POST를 사용하는 것이 이상하다고 느낍니다. –

+0

+1 어쨌든, 값을 전달하려면 당신이 처음에 요청에서 그것을 읽을 필요가있는 시각, 맞습니까? 즉,'& cat = 123' 우리는 이제 여러분이 어쨌든 무엇을 필요로하는지 잘 이해합니다. 코드를 살펴 보지 않으면 무엇이 잘못되었는지를 알 수 없습니다. – biesior

답변

3

한번에 통과 '_default 옵션 도우미 select에 : 그것은 보인다

@import views.html.helper._ 

@select(form("email"), options(List("first", "third")), '_default -> "second") 

, 불행하게도, 유일한 방법은 그것을 알아낼 수는 source을 보는 것입니다.

업데이트 :

option 태그를 설정하지 않습니다 _default 재산 selected 속성을 지정. 입력을 미리 선택하는 유일한 방법은 미리 채워진 양식을 템플릿에 전달하는 것입니다. 보기에 전달하기 전에 액션에 미리 작성된 양식에 다음

case class RegInfo(email: String, color: String) 

private val registrationForm = Form(
    mapping(
    "email" → email, 
    "color" → nonEmptyText(minLength = 5, maxLength = 32) 
)(RegInfo.apply)(RegInfo.unapply) 
) 

: 예를 들어, 다음과 같은 형태가 있다고 가정

def create = Action { 
    Ok(html.create(registrationForm.fill(RegInfo("[email protected]", "blue")))) 
} 

그런 다음 템플릿을 사용 헬퍼 :

@select(form("color"), options(List("red", "green", "blue"))) 

과 가치 미리 선택됩니다. 실용적인 접근 방식과 함께 종료

+0

사실 그것은 게임 시작 설명서에 포함되어 있지만이 절의 문제는 기본 항목이 일반 항목의 일부가 아니라는 것입니다. 어떻게 든 Play는 GET 대신에 POST를 사용한다고 예상하는 것 같습니다. 그러면 올바른 항목이 자동으로 선택됩니다. 문제는 현재 POST를 사용하지 않고 있습니다. ;-) –

+0

답변을 업데이트했습니다. 그것은 당신을 위해 일할 수 있습니다. 그리고 사건에 대해 좀 더 알려주세요. – lambdas

+0

고마워요! 원래 게시물에 세부 정보를 추가했습니다. 솔루션을 Java로 게시 할 수 있습니까? 아니면 완전히 새로운 생각을 가지고 있습니다. 이제는 문제에 대한 세부 정보를 추가했습니다. :-) –

0

: 그것을 할 수있는 더 나은 옵션/방법이 있는지

<select id="myfield" name="myfield" > 

    <option class="blank" value="">-- All items --</option> 

    @for((key, value) <- MyModel.options) { 

     @if(key == GETValuePassedToTemplate) { 
      <option value="@key" selected>@value</option> 
     } else { 
      <option value="@key">@value</option>        
     } 
    } 

</select> 

아직도 궁금.

0

실제로 더 좋은 해결책이 있습니다.양식이 부분적으로 바인딩 된 템플리트를 호출하면 목표를 달성 할 수 있습니다.

Ok(views.html.myForm(myForm.bind(
      Map("fieldName1" -> "value1", 
       "fieldName2" -> "value2")))) 

당신이 당신이 미리 선택하려는 option의의 value s의 fieldName에 매핑 확인 : 여기에 귀하의 컨트롤러에 대한 코드입니다.

0

더 나은 옵션/방법이 있는지 궁금해하고 있습니다.

플레이를 사용하는 방법에 대한 귀하의하지 열중이 특정 문제를 해결하는 경우

글쎄, 당신은 항상 자바 스크립트와 jQuery를 사용하여 해결할 수 : 당신의 선택 옵션은 각각의 값과 하나가

$(function() {  
    $('#yourSelect_id').val(5); 
} 

을 옵션을 선택하면 값이 5가됩니다.

관련 문제