2013-02-23 6 views
0
@(myForm: Form[FormObject]) 

@import helper._ 
@import helper.twitterBootstrap._ 

@main("Test") { 
    @form(routes.Application.save) { 
    @input(myForm("number"), '_label -> "Number") { (id, name, value, args) => 
     @if(value.isEmpty) { 
     <input type="text" name="@name" id="@id" value="@value"> 
     } else { 
     <input type="text" name="@name" id="@id" value="@value" disabled> 
     } 
    } 
    @input(myForm("startDate"), '_label -> "Start Date") { (id, name, value, args) => 
     <div class="input-append date datepicker" data-date="@value" data-date-format="dd-mm-yyyy"> 
     <input class="span2" size="16" type="text" value="@value"><span class="add-on"><i class="icon-calendar"></i></span> 
     </div> 
    } 
    <button type="submit" class="btn" title="Save"><i class="icon-ok"></i></button> 
    } 
} 

public class FormObject { 
public String number; 
public String startDate; 
} 
  1. 첫 번째 문제는 필드 '수'의 값이 비어 (따라서 사용할 수 없습니다 표시)하지 때 그래서 난이 값을 잃고, 다시 FormObject에 결합되지 않는 것입니다 발행합니다.
  2. 두 번째 문제는 'startDate'필드가 FormObject에 바인딩되지 않는다는 것입니다.플레이 프레임 워크 2.0 템플릿

    나는 뭔가를 놓친가요?

답변

1

첫째 : 그것은 일반적인 실수 - disabled 속성도 전송에서 필드를 비활성화, 그래서는 요청 시간을 재생하는 경우에도 사용할 수 없습니다. 대신 readonly을 사용하십시오. (more about disabled vs readonly) 아마

@input(myForm("number"), '_label -> "Number") { (id, name, value, args) => 
     <input type="text" name="@name" id="@id" value="@value" @if(!value.isEmpty){ readonly="readonly" }> 
    } 

당신이 그렇지 않으면 종종 사용자가 버그 (I이 필드를 편집 할 수 없습니다 로 간주 필드는 읽기 전용이다 악센트에 대한 몇 가지 CSS/JS를 사용해야하고 모르는 왜)

두 번째 : 실제로는 String 필드 인 경우 - 이유를 모르겠습니다. Date 형식 변경으로 인해 문제가 발생하는 경우 Play에서 자동으로 구문 분석 할 수 없습니다. 저장/업데이트하기 전에 컨트롤러에서 지정된 형식으로 파싱해야합니다.

+0

감사합니다. 장애인이 그 사실을 알았습니다. 날짜 필드는 문자열이므로 형식이 문제가되어서는 안됩니다. –

+0

그런 경우 요청에서 바인드하고'Logger.debug (field)'를 사용하여 터미널에 표시하십시오. 나는 왜 간단한 'String' 필드가 바인드되지 않는지 전혀 모르겠다./ – biesior

+0

디버거를 사용하여 요청을 확인했지만 요청에'startDate '필드가 없습니다. HTML은 다음과 같습니다 :