2014-05-21 2 views
1

지금 나는 큰 smartgwt 프로젝트에서 일하고 있습니다. 좋은 기능을 구현해야하지만 어떻게해야하는지 잘 모릅니다.사용자가 smartgwt로 저장되지 않은 양식을 남기지 못하도록

우리의 응용 프로그램에는 다양한 탭과 격자에 서식이 많이 있습니다. 각 양식에는 고유 한 저장 버튼이 있으며 눌려지면 저장 작업 전에 몇 가지 작업을 수행합니다. 응용 프로그램의 경우 사용자가 단추를 누를 때만 양식을 저장하는 것이 매우 중요합니다. 내가 필요한 것은 사용자가 저장되지 않은 폼을 떠나지 못하도록하는 일종의 핸들러입니다. 내 의도는 어떤 종류의 경고 팝업을 표시하는 것이지만 나는 행동을 묶는 방법을 모른다.

smartgwt와 같은 것을 수행 할 수 있는지는 잘 모르겠지만 큰 웹 응용 프로그램에서 사용하는 것은 매우 전형적인 기능입니다.

몇 가지 아이디어가 있습니까? 누군가이 문제가 있었나요?

답변

0

GWT의 거의 모든 사용자 작업을 가로 챌 수 있습니다. 당신이 페이지를 떠나지에서 사용자를 방지하기 위해, 예를 들어 원하는 경우 같은 것을 사용할 수 있습니다 : 당신이 탭을 닫기 같은 다른 작업에 사용자를 중지하려면

Window.addWindowClosingHandler(new Window.ClosingHandler() { 
    @Override 
    public void onWindowClosing(ClosingEvent event) { 
     if (unsavedData) { 
      event.setMessage("There is unsaved data. Do you really want to leave?"); 
     } 
    } 
}); 

당신도 할 수있는 적절한 이벤트 리스너를 추가하여.

저장되지 않은 데이터가 있는지 여부를 확인하는 작업도 매우 간단하지만 UI 구성 요소에 따라 다릅니다. 예를 들어 listGrid에서 listGrid.getAllEditRows(). lenght 양식을 사용할 수 있습니다. form.getOldValues ​​()와 form.getValues ​​()를 비교할 수 있습니다 (구아바 라이브러리가이 작업에 적합합니다 : Maps.difference (form.getOldValues), form.getValues ​​()). areEqual()) 아마도 형식이 저장되지 않은 데이터를 확인하는 더 나은 방법이 있지만 그것을 모릅니다.

그리고 마지막으로 문제 - 모든 것을 하나로 연결합니다. 여러 저장 담당자가있는 사용자 정의 저장 컨트롤러를 만들었습니다. 이 방법을 사용하면 controller.isThereAnyUnsavedData()를 요청할 수 있으며 컨트롤러는 각 참가자에게 질문해야합니다.

+0

방금 ​​당신의 대답을 보았습니다, 감사합니다! – ius

관련 문제