2011-10-27 5 views
2

Play 프레임 워크 (자바)에서 양식의 유효성을 검사하는 중 제출 후 양식 값에 쉼표가 추가됩니다.Play Framework 플래시 변수 데이터를 쉼표로 추가

public static void create() { 
    boolean isAuthorized = Security.isConnected(); 
    // Get the user details 
    String userid = Security.connected(); 

    render(isAuthorized, userid); 
} 

검증 모든 작품 :

public static void doCreate(JumpSession session, String[] jumpers) { 

    validation.required(session.getSessionName()).message("sessionName.required"); 
    validation.required(session.getJumpDate()).message("jumpDate.required"); 
    validation.required(jumpers).message("jumpers.required"); 


    if (validation.hasErrors()) { 
     params.flash(); // add http parameters to the flash scope 
     validation.keep(); // keep the errors for the next request 
     create(); 
    } 

    render(); 
} 

방법 create() 그냥 표시 된 것과 동일한 양식을 렌더링 : 여기

#{form @doCreate()} 
    <input type="text" name="session.sessionName" value="${flash['session.sessionName']}"/> 
    <input type="text" name="session.jumpDate"value="${flash['session.jumpDate']}"/> 
    <select id="jumpers" multiple="multiple" name="jumpers[]" title="Click to Select a Jumper"> 
     ..several options here 
    </select> 
#{/form} 

가 양식 처리기입니다 : 여기

폼의 각 필드의 값을 제외하고 벌금은 끝에 ','문자가 추가되었습니다. 검증 후. 완전히 비어있는 양식을 제출하면 모든 필드에 쉼표 (',') 문자가 표시됩니다. 한 필드에만 값을 입력하면 그 값은 쉼표로 끝나게됩니다. 더 많은 것은 인 무엇, 나가 다시 복종시키는 경우에, 각 쉼표 전에 지금 2 개의 쉼표 더있다!

편집 : 또한 변수가 실제로 정의되었는지 확인하기 위해 ${flash['session.jumpTime']?:""}을 사용해 보았습니다.

EDIT : params.flash() 메소드에서 발생합니다. System.out.println(params.allSimple())은 쉼표가없는 것으로 나타 났지만 params.flash() 다음에 flash.ut.println (flash)으로 표시된 값은 쉼표로 표시됩니다. 손으로 플래시에 값을 추가하면 쉼표가 나타나지 않습니다.

이 문제는 내 문제를 해결하지만 여전히 params.flash()를 사용할 수없는 이유를 알고 싶습니다.

답변

1

문제를 발견했으며 결국 Play와 관련이 없습니다. 내가 사용하고 있던 자바 스크립트 라이브러리 (jQuery 도구)는 나를 모르는 상태에서 페이지의 요소를 복제하여 이중 폼 제출을 작성했습니다. 모든 양식 요소가 두 배가 되었기 때문에 값은 쉼표로 구분됩니다. 이것은 .flash() 메소드에 쉼표 만 삽입했기 때문에 params 변수에서 감지 할 수 없었습니다.

Pshaw.