2017-03-13 6 views
1

저는 Vaadin과 웹 어플리케이션에 익숙하지 않습니다. Vaadin 추가 기능 Steinwedel을 사용하여 MessageBox에서 선택한 옵션 (간단한 예 또는 아니오)을 가져 오는 데 문제가 있습니다.vaadin에서 messagebox로 옵션을 기다리는 방법은 무엇입니까?

클라이언트가 "예"또는 "아니오"라고 말한 다음 Java JOption처럼 해당 옵션에 대한 코드를 실행해야합니다. 내 MessageBox가 열려있는 경우에도,

int option = MessageBox.showDialog (message, title, QUESTION_YES_NO_OPTION); 

하지만 내 코드는 항상을 통해 실행 : 나는 옵션을 반환 MessageBox에 대한 클래스가 있습니다.

답변

3

Vaadin과 같은 기존의 데스크톱 GUI 프레임 워크와 달리 서버 측에서 주로 프로그래밍하고 클라이언트 측에서 이벤트를 수신합니다 (사용자 상호 작용이있는 브라우저). 따라서 클라이언트에서 보낸 (HTTP) 요청에 대한 응답이 전송되지 않으므로 대화 상자 표시는 서버 측 코드에서 차단되지 않습니다. 대신 대화 상자를 표시하고 대화 상자 버튼의 클릭 이벤트를 수신해야합니다.

MessageBox 
    .createInfo() 
    .withCaption("Info") 
    .withMessage("Hello World!") 
    .withOkButton(() -> System.out.println("Ok pressed.")) 
    .open(); 

이 예제는 애드온 설명에서 가져온 것입니다. 여기서 그들은 println으로 OK 버튼 클릭을 처리했습니다.

+1

이것이 더 이상 허용 된 대답이 아닌 이유가 궁금합니다. –

+0

나도 그래! 이 경우 .open(); MessageBox에 의존하지만 MessageBox()에 배치되지 않아야하는 경우, 우리는 어떻게해야합니까? 어떤 제안있어? MessageBox 지점에서 코드를 중지 한 다음 다시 계속하십시오!? –

+0

내가 제대로 할 수 있는지 모르겠지만'withOkButton'에서 람다 코드를 호출 할 수 있습니다. 예를 들어, 사용자가 OK 버튼을 누른 후이 메소드를'withOkButton (this :: doXYZ) '처럼 참조해야만하는 모든 코드를 포함하는'doXYZ' 메소드를 만들 수 있습니다. 실제로 "MessageBox에서 코드를 중지 할 수 없습니다." –